]> code.citadel.org Git - citadel.git/blobdiff - webcit/context_loop.c
Adjust the folder counters when reading / deleting / moving messages
[citadel.git] / webcit / context_loop.c
index 8218d1d9accf5b01667f383db4a314bb58b016c0..6511572dbbf06b4e083846499c4bfec2f4652a0b 100644 (file)
@@ -73,7 +73,7 @@ void do_housekeeping(void)
                if ((sptr->inuse == 0) && 
                    ((the_time - (sptr->lastreq)) > (time_t) WEBCIT_TIMEOUT))
                {
-                       syslog(3, "Timeout session %d", sptr->wc_session);
+                       syslog(LOG_DEBUG, "Timeout session %d", sptr->wc_session);
                        sptr->killthis = 1;
                }
 
@@ -100,7 +100,7 @@ void do_housekeeping(void)
         * Now free up and destroy the culled sessions.
         */
        while (sessions_to_kill != NULL) {
-               syslog(3, "Destroying session %d", sessions_to_kill->wc_session);
+               syslog(LOG_DEBUG, "Destroying session %d", sessions_to_kill->wc_session);
                sptr = sessions_to_kill->next;
                session_destroy_modules(&sessions_to_kill);
                sessions_to_kill = sptr;
@@ -344,7 +344,7 @@ int ReadHttpSubject(ParsedHttpHdrs *Hdr, StrBuf *Line, StrBuf *Buf)
                int return_value;
                StrBuf *NewLine = NewStrBuf();
                Hdr->HR.DontNeedAuth = 1;
-               StrBufAppendPrintf(NewLine, "GET /landing?go=%s HTTP/1.0", ChrPtr(Buf));
+               StrBufAppendPrintf(NewLine, "GET /landing?go=%s?failvisibly=1 HTTP/1.0", ChrPtr(Buf));
                syslog(LOG_DEBUG, "Replacing with: %s", ChrPtr(NewLine));
                return_value = ReadHttpSubject(Hdr, NewLine, Buf);
                FreeStrBuf(&NewLine);
@@ -425,7 +425,7 @@ int ReadHTTPRequest (ParsedHttpHdrs *Hdr)
                        continue;
                }
 
-               StrBufSanitizeAscii(Line, 'ยง');
+               StrBufSanitizeAscii(Line, (char)0xa7);
                StrBufExtract_token(HeaderName, Line, 0, ':');
 
                pchs = ChrPtr(Line);
@@ -618,7 +618,7 @@ void context_loop(ParsedHttpHdrs *Hdr)
        /* How long did this transaction take? */
        gettimeofday(&tx_finish, NULL);
 
-       syslog(LOG_DEBUG, "HTTP: 200 [%ld.%06ld] %s %s",
+       syslog(LOG_INFO, "HTTP: 200 [%ld.%06ld] %s %s",
                ((tx_finish.tv_sec*1000000 + tx_finish.tv_usec) - (tx_start.tv_sec*1000000 + tx_start.tv_usec)) / 1000000,
                ((tx_finish.tv_sec*1000000 + tx_finish.tv_usec) - (tx_start.tv_sec*1000000 + tx_start.tv_usec)) % 1000000,
                ReqStrs[Hdr->HR.eReqType],
@@ -633,9 +633,9 @@ void context_loop(ParsedHttpHdrs *Hdr)
         * table from getting bombarded with new sessions when, for example, a web
         * spider crawls the site without using cookies.
         */
-       if ((session_may_be_reused) && (!WC->logged_in)) {
-               WC->wc_session = 0;                     /* flag as available for re-use */
-               TheSession->selected_language = 0;      /* clear any non-default language setting */
+       if ((session_may_be_reused) && (!TheSession->logged_in)) {
+               TheSession->wc_session = 0;             /* flag as available for re-use */
+               TheSession->selected_language = -1;     /* clear any non-default language setting */
        }
 
        TheSession->Hdr = NULL;
@@ -714,6 +714,31 @@ void Header_HandleAcceptEncoding(StrBuf *Line, ParsedHttpHdrs *hdr)
                hdr->HR.gzip_ok = 1;
        }
 }
+
+void Header_HandleContentRange(StrBuf *Line, ParsedHttpHdrs *hdr)
+{
+       const char *PRange = ChrPtr(Line);
+
+       while ((*PRange != '=') && (*PRange != '\0'))
+               PRange ++;
+       if (*PRange == '=')
+               PRange ++;
+       if ((*PRange == '\0'))
+               return;
+       hdr->HaveRange = 1;
+       hdr->RangeStart = atol(PRange);
+
+       while (isdigit(*PRange))
+               PRange++;
+
+       if (*PRange == '-')
+               PRange ++;
+       if ((*PRange == '\0'))
+               hdr->RangeTil = -1;
+       else
+               hdr->RangeTil = atol(PRange);
+}
+
 const char *ReqStrs[eNONE] = {
        "GET",
        "POST",
@@ -798,6 +823,7 @@ void
 InitModule_CONTEXT
 (void)
 {
+       RegisterHeaderHandler(HKEY("RANGE"), Header_HandleContentRange);
        RegisterHeaderHandler(HKEY("CONTENT-LENGTH"), Header_HandleContentLength);
        RegisterHeaderHandler(HKEY("CONTENT-TYPE"), Header_HandleContentType);
        RegisterHeaderHandler(HKEY("X-FORWARDED-HOST"), Header_HandleXFFHost); /* Apache way... */