]> code.citadel.org Git - citadel.git/blobdiff - webcit/context_loop.c
don't use non-ascii chars.
[citadel.git] / webcit / context_loop.c
index 5320e56fc58dfb8f1a351ea83103e5d7265256e3..6511572dbbf06b4e083846499c4bfec2f4652a0b 100644 (file)
@@ -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);
@@ -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... */