]> code.citadel.org Git - citadel.git/blobdiff - webcit/webserver.c
* remove accidently committed test stuff
[citadel.git] / webcit / webserver.c
index 5c328b189160b2e14f0af123df436b4094922557..4bc12f512b21910bde982cc0dd1813031d559531 100644 (file)
@@ -27,6 +27,7 @@ int is_https = 0;             /* Nonzero if I am an HTTPS service */
 int follow_xff = 0;            /* Follow X-Forwarded-For: header */
 int home_specified = 0;                /* did the user specify a homedir? */
 int time_to_die = 0;            /* Nonzero if server is shutting down */
+int DisableGzip = 0;
 extern void *context_loop(int*);
 extern void *housekeeping_loop(void);
 extern pthread_mutex_t SessionListMutex;
@@ -113,10 +114,12 @@ int ig_tcp_server(char *ip_addr, int port_number, int queue_len)
        i = 1;
        setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &i, sizeof(i));
 
+       #ifndef __APPLE__
        fcntl(s, F_SETFL, O_NONBLOCK); /* maide: this statement is incorrect
                                          there should be a preceding F_GETFL
                                          and a bitwise OR with the previous
                                          fd flags */
+       #endif
        
        if (bind(s, (struct sockaddr *) &sin, sizeof(sin)) < 0) {
                lprintf(1, "Can't bind: %s\n", strerror(errno));
@@ -147,7 +150,7 @@ int ig_uds_server(char *sockpath, int queue_len)
        if (actual_queue_len < 5) actual_queue_len = 5;
 
        i = unlink(sockpath);
-       if (i != 0) if (errno != ENOENT) {
+       if ((i != 0) && (errno != ENOENT)) {
                lprintf(1, "webcit: can't unlink %s: %s\n",
                        sockpath, strerror(errno));
                exit(WC_EXIT_BIND);
@@ -260,7 +263,7 @@ void begin_burst(void)
  */
 long end_burst(void)
 {
-       struct wcsession *WCC = WC;
+       wcsession *WCC = WC;
         const char *ptr, *eptr;
         long count;
        ssize_t res;
@@ -269,7 +272,7 @@ long end_burst(void)
 
 #ifdef HAVE_ZLIB
        /* Perform gzip compression, if enabled and supported by client */
-       if ((WCC->gzip_ok) && CompressBuffer(WCC->WBuf))
+       if (!DisableGzip && (WCC->gzip_ok) && CompressBuffer(WCC->WBuf))
        {
                hprintf("Content-encoding: gzip\r\n");
        }
@@ -656,7 +659,7 @@ const char *nix(void *vptr) {snprintf(foobuf, 32, "%0x", (long) vptr); return fo
 void InitTemplateCache(void);
 extern int LoadTemplates;
 extern void LoadZoneFiles(void);
-
+StrBuf *csslocal = NULL;
 /*
  * Here's where it all begins.
  */
@@ -690,9 +693,12 @@ int main(int argc, char **argv)
        TemplateCache = NewHash(1, NULL);
        GlobalNS = NewHash(1, NULL);
        Iterators = NewHash(1, NULL);
-       Contitionals = NewHash(1, NULL);
-       LoadZoneFiles();
+       Conditionals = NewHash(1, NULL);
+       MsgHeaderHandler = NewHash(1, NULL);
+       MimeRenderHandler = NewHash(1, NULL);
+       SortHash = NewHash(1, NULL);
 
+       LoadZoneFiles();
 
 #ifdef DBG_PRINNT_HOOKS_AT_START
        dbg_PrintHash(HandlerHash, nix, NULL);
@@ -711,9 +717,9 @@ int main(int argc, char **argv)
 
        /* Parse command line */
 #ifdef HAVE_OPENSSL
-       while ((a = getopt(argc, argv, "h:i:p:t:T:x:dD:cfs")) != EOF)
+       while ((a = getopt(argc, argv, "h:i:p:t:T:x:dD:cfsZ")) != EOF)
 #else
-       while ((a = getopt(argc, argv, "h:i:p:t:T:x:dD:cf")) != EOF)
+       while ((a = getopt(argc, argv, "h:i:p:t:T:x:dD:cfZ")) != EOF)
 #endif
                switch (a) {
                case 'h':
@@ -753,6 +759,9 @@ int main(int argc, char **argv)
                case 'T':
                        LoadTemplates = atoi(optarg);
                        break;
+               case 'Z':
+                       DisableGzip = 1;
+                       break;
                case 'x':
                        verbosity = atoi(optarg);
                        break;
@@ -782,7 +791,7 @@ int main(int argc, char **argv)
                                "[-i ip_addr] [-p http_port] "
                                "[-t tracefile] [-c] [-f] "
                                "[-T Templatedebuglevel] "
-                               "[-d] "
+                               "[-d] [-Z] "
 #ifdef HAVE_OPENSSL
                                "[-s] "
 #endif
@@ -868,15 +877,23 @@ int main(int argc, char **argv)
                perror("chdir");
        }
        LoadIconDir(static_icon_dir);
-       InitTemplateCache();
 
        initialise_modules();
        initialize_viewdefs();
        initialize_axdefs();
 
+       InitTemplateCache();
+
+       if (!access("static.local/webcit.css", R_OK)) {
+               csslocal = NewStrBufPlain(HKEY("<link href=\"static.local/webcit.css\" rel=\"stylesheet\" type=\"text/css\">"));
+       }
+
        /* Tell libical to return an error instead of aborting if it sees badly formed iCalendar data. */
        icalerror_errors_are_fatal = 0;
 
+       /* Use our own prefix on tzid's generated from system tzdata */
+       icaltimezone_set_tzid_prefix("/citadel.org/");
+
        /*
         * Set up a place to put thread-specific data.
         * We only need a single pointer per thread - it points to the
@@ -966,7 +983,10 @@ void ShutDownWebcit(void)
        DeleteHash(&TemplateCache);
        DeleteHash(&LocalTemplateCache);
        DeleteHash(&Iterators);
-       DeleteHash(&Contitionals);
+       DeleteHash(&MimeRenderHandler);
+       DeleteHash(&Conditionals);
+       DeleteHash(&MsgHeaderHandler);
+       DeleteHash(&SortHash);
 #ifdef ENABLE_NLS
        ShutdownLocale();
 #endif