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