- ReqType = NewStrBuf();
- HTTPVersion = NewStrBuf();
- StrBufExtract_token(HTTPVersion, ReqLine, 2, ' ');
- StrBufExtract_token(ReqType, ReqLine, 0, ' ');
- StrBufCutLeft(ReqLine, StrLength(ReqType) + 1);
- StrBufCutRight(ReqLine, StrLength(HTTPVersion) + 1);
-
- if ((follow_xff == 1) && (StrLength(ReqLine) >= 8) &&
- (ptr = strstr(ChrPtr(ReqLine), "/webcit/"), /*< Handle "/webcit/" */
- (ptr != NULL))) {
- StrBufCutLeft(ReqLine, 7);
- }
-
- /** Begin parsing the request. */
-#ifdef TECH_PREVIEW
- if ((strncmp(ChrPtr(ReqLine), "/sslg", 5) != 0) &&
- (strncmp(ChrPtr(ReqLine), "/static/", 8) != 0) &&
- (strncmp(ChrPtr(ReqLine), "/tiny_mce/", 10) != 0) &&
- (strncmp(ChrPtr(ReqLine), "/wholist_section", 16) != 0) &&
- (strstr(ChrPtr(ReqLine), "wholist_section") == NULL)) {
-#endif
- lprintf(5, "HTTP: %s %s %s\n", ChrPtr(ReqType), ChrPtr(ReqLine), ChrPtr(HTTPVersion));
-#ifdef TECH_PREVIEW
- }
-#endif
-
- /** Check for bogus requests */
- if ((StrLength(HTTPVersion) == 0) ||
- (StrLength(ReqType) == 0) ||
- is_bogus(ReqLine)) {
- StrBufPlain(ReqLine, HKEY("/404 HTTP/1.1"));
- StrBufPlain(ReqType, HKEY("GET"));
- }
- FreeStrBuf(&HTTPVersion);
-
- /**
- * While we're at it, gracefully handle requests for the
- * robots.txt and favicon.ico files.
- */
- if (!strncasecmp(ChrPtr(ReqLine), "/robots.txt", 11)) {
- StrBufPlain(ReqLine,
- HKEY("/static/robots.txt"
- "?force_close_session=yes HTTP/1.1"));
- StrBufPlain(ReqType, HKEY("GET"));
- }
- else if (!strncasecmp(ChrPtr(ReqLine), "/favicon.ico", 12)) {
- StrBufPlain(ReqLine, HKEY("/static/favicon.ico"));
- StrBufPlain(ReqType, HKEY("GET"));
- }
-
- /**
- * These are the URL's which may be executed without a
- * session cookie already set. If it's not one of these,
- * force the session to close because cookies are
- * probably disabled on the client browser.
- */
- else if ( (StrLength(ReqLine) > 1 )
- && (strncasecmp(ChrPtr(ReqLine), "/listsub", 8))
- && (strncasecmp(ChrPtr(ReqLine), "/freebusy", 9))
- && (strncasecmp(ChrPtr(ReqLine), "/do_logout", 10))
- && (strncasecmp(ChrPtr(ReqLine), "/groupdav", 9))
- && (strncasecmp(ChrPtr(ReqLine), "/static", 7))
- && (strncasecmp(ChrPtr(ReqLine), "/rss", 4))
- && (strncasecmp(ChrPtr(ReqLine), "/404", 4))
- && (got_cookie == 0)) {
- StrBufPlain(ReqLine,
- HKEY("/static/nocookies.html"
- "?force_close_session=yes"));
- }
-
- /**