]> code.citadel.org Git - citadel.git/blobdiff - webcit/context_loop.c
Host header is now stored per-request instead of globally.
[citadel.git] / webcit / context_loop.c
index 35e6ee7b34e5afcae4d83571c5c29f306171b4f5..0979181b4364c08f02723ef08aa33494c8e6127f 100644 (file)
@@ -522,16 +522,12 @@ void context_loop(ParsedHttpHdrs *Hdr)
                /* How long did this transaction take? */
                gettimeofday(&tx_finish, NULL);
                
-#ifdef TECH_PREVIEW
-               if ((Hdr->HR.Handler != NULL) ||
-                   ((Hdr->HR.Handler->Flags & LOGCHATTY) == 0))
-#endif
-                       lprintf(9, "HTTP: 200 [%ld.%06ld] %s %s \n",
-                               ((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],
-                               ChrPtr(Hdr->this_page)
-                               );
+               lprintf(9, "HTTP: 200 [%ld.%06ld] %s %s \n",
+                       ((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],
+                       ChrPtr(Hdr->this_page)
+               );
                session_detach_modules(Static);
                session_destroy_modules(&Static);
                return;
@@ -590,16 +586,12 @@ void context_loop(ParsedHttpHdrs *Hdr)
        gettimeofday(&tx_finish, NULL);
        
 
-#ifdef TECH_PREVIEW
-       if ((Hdr->HR.Handler != NULL) &&
-           ((Hdr->HR.Handler->Flags & LOGCHATTY) == 0))
-#endif
-               lprintf(9, "HTTP: 200 [%ld.%06ld] %s %s \n",
-                       ((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],
-                       ChrPtr(Hdr->this_page)
-                       );
+       lprintf(9, "HTTP: 200 [%ld.%06ld] %s %s \n",
+               ((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],
+               ChrPtr(Hdr->this_page)
+       );
 
        session_detach_modules(TheSession);
 
@@ -632,20 +624,25 @@ void Header_HandleContentType(StrBuf *Line, ParsedHttpHdrs *hdr)
 
 void Header_HandleHost(StrBuf *Line, ParsedHttpHdrs *hdr)
 {
-       if (site_prefix == NULL) {
-               site_prefix = NewStrBuf();
-               StrBufAppendPrintf(site_prefix, "%s://", (is_https ? "https" : "http") );
-               StrBufAppendBuf(site_prefix, Line, 0);
+       if (hdr->HostHeader != NULL) {
+               FreeStrBuf(&hdr->HostHeader);
        }
+       hdr->HostHeader = NewStrBuf();
+       StrBufAppendPrintf(hdr->HostHeader, "%s://", (is_https ? "https" : "http") );
+       StrBufAppendBuf(hdr->HostHeader, Line, 0);
 }
 
 void Header_HandleXFFHost(StrBuf *Line, ParsedHttpHdrs *hdr)
 {
-       if ( (follow_xff) && (site_prefix == NULL)) {
-               site_prefix = NewStrBuf();
-               StrBufAppendPrintf(site_prefix, "http://");     /* this is naive; do something about it */
-               StrBufAppendBuf(site_prefix, Line, 0);
+       if (!follow_xff) return;
+
+       if (hdr->HostHeader != NULL) {
+               FreeStrBuf(&hdr->HostHeader);
        }
+
+       hdr->HostHeader = NewStrBuf();
+       StrBufAppendPrintf(hdr->HostHeader, "http://"); /* this is naive; do something about it */
+       StrBufAppendBuf(hdr->HostHeader, Line, 0);
 }
 
 
@@ -791,6 +788,7 @@ HttpDetachModule_CONTEXT
 (ParsedHttpHdrs *httpreq)
 {
        FlushStrBuf(httpreq->PlainArgs);
+       FlushStrBuf(httpreq->HostHeader);
        FlushStrBuf(httpreq->this_page);
        FlushStrBuf(httpreq->PlainArgs);
        DeleteHash(&httpreq->HTTPHeaders);
@@ -805,6 +803,7 @@ HttpDestroyModule_CONTEXT
        FreeStrBuf(&httpreq->PlainArgs);
        FreeStrBuf(&httpreq->this_page);
        FreeStrBuf(&httpreq->PlainArgs);
+       FreeStrBuf(&httpreq->HostHeader);
        DeleteHash(&httpreq->HTTPHeaders);
 
 }