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;
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));
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);
#ifdef HAVE_OPENSSL
if (is_https) {
- while ((retval >= 0) && (StrLength(Buf) < bytes))
+ while ((StrLength(Buf) + StrLength(Target) < bytes) &&
+ (retval >= 0))
retval = client_read_sslbuffer(Buf, timeout);
if (retval >= 0) {
StrBufAppendBuf(Target, Buf, 0); /// todo: Buf > bytes?
-
+#ifdef HTTP_TRACING
+ write(2, "\033[32m", 5);
+ write(2, buf, bytes);
+ write(2, "\033[30m", 5);
+#endif
+ return 1;
}
else {
lprintf(2, "client_read_ssl() failed\n");
write(2, buf, bytes);
write(2, "\033[30m", 5);
#endif
- return (1);
+ return 1;
}
#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");
}
int rlen, len, retval = 0;
if (is_https) {
+ int ntries = 0;
if (StrLength(CLineBuf) > 0) {
pchs = ChrPtr(CLineBuf);
pch = strchr(pchs, '\n');
}
}
- while ((retval >= 0) &&
- (pchs = ChrPtr(CLineBuf),
- pch = strchr(pchs, '\n'),
- pch == NULL))
- retval = client_read_sslbuffer(CLineBuf, SLEEPING);
+ while (retval == 0) {
+ pch = NULL;
+ pchs = ChrPtr(CLineBuf);
+ if (*pchs != '\0')
+ pch = strchr(pchs, '\n');
+ if (pch == NULL) {
+ retval = client_read_sslbuffer(CLineBuf, SLEEPING);
+ pchs = ChrPtr(CLineBuf);
+ pch = strchr(pchs, '\n');
+ }
+ if (retval == 0) {
+ sleeeeeeeeeep(1);
+ ntries ++;
+ }
+ if (ntries > 10)
+ return 0;
+ }
if ((retval > 0) && (pch != NULL)) {
rlen = 0;
len = pch - pchs;
void InitTemplateCache(void);
extern int LoadTemplates;
extern void LoadZoneFiles(void);
-
+StrBuf *csslocal = NULL;
/*
* Here's where it all begins.
*/
GlobalNS = NewHash(1, NULL);
Iterators = NewHash(1, NULL);
Contitionals = NewHash(1, NULL);
- LoadZoneFiles();
+ MsgHeaderHandler = NewHash(1, NULL);
+ MimeRenderHandler = NewHash(1, NULL);
+ LoadZoneFiles();
#ifdef DBG_PRINNT_HOOKS_AT_START
dbg_PrintHash(HandlerHash, nix, NULL);
/* 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':
case 'T':
LoadTemplates = atoi(optarg);
break;
+ case 'Z':
+ DisableGzip = 1;
+ break;
case 'x':
verbosity = atoi(optarg);
break;
initialize_viewdefs();
initialize_axdefs();
+ 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;
DeleteHash(&TemplateCache);
DeleteHash(&LocalTemplateCache);
DeleteHash(&Iterators);
+ DeleteHash(&MimeRenderHandler);
DeleteHash(&Contitionals);
+ DeleteHash(&MsgHeaderHandler);
#ifdef ENABLE_NLS
ShutdownLocale();
#endif