]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_httpd.cpp
Fix test client error cheecking on result types
[user/henk/code/inspircd.git] / src / modules / m_httpd.cpp
index 7d670ea2b67b8d5d5936170f8ddd5bfc310487ca..58dece3233b4423f2b0f1efb0d701533b4ba001f 100644 (file)
@@ -164,13 +164,21 @@ class HttpSocket : public InspSocket
                }
        }
 
-       void SendHeaders(unsigned long size, int response)
+       void SendHeaders(unsigned long size, int response, const std::string &extraheaders)
        {
                struct tm *timeinfo = localtime(&TIME);
                this->Write("HTTP/1.1 "+ConvToStr(response)+" "+Response(response)+"\r\nDate: ");
                this->Write(asctime(timeinfo));
+               if (extraheaders.empty())
+               {
+                       this->Write("Content-Type: text/html\r\n");
+               }
+               else
+               {
+                       this->Write(extraheaders);
+               }
                this->Write("Server: InspIRCd/m_httpd.so/1.1\r\nContent-Length: "+ConvToStr(size)+
-                               "\r\nConnection: close\r\nContent-Type: text/html\r\n\r\n");
+                               "\r\nConnection: close\r\n\r\n");
        }
 
        virtual bool OnDataReady()
@@ -196,13 +204,13 @@ class HttpSocket : public InspSocket
 
                                if ((http_version != "HTTP/1.1") && (http_version != "HTTP/1.0"))
                                {
-                                       SendHeaders(0, 505);
+                                       SendHeaders(0, 505, "");
                                }
                                else
                                {
                                        if ((request_type == "GET") && (uri == "/"))
                                        {
-                                               SendHeaders(index->ContentSize(),200);
+                                               SendHeaders(index->ContentSize(), 200, "");
                                                this->Write(index->Contents());
                                        }
                                        else
@@ -213,7 +221,10 @@ class HttpSocket : public InspSocket
                                                e.Send();
 
                                                if (!claimed)
-                                                       SendHeaders(0, 404);
+                                               {
+                                                       SendHeaders(0, 404, "");
+                                                       log(DEBUG,"Page not claimed, 404");
+                                               }
                                        }
                                }
 
@@ -230,9 +241,10 @@ class HttpSocket : public InspSocket
                }
        }
 
-       void Page(std::stringstream* n, int response)
+       void Page(std::stringstream* n, int response, std::string& extraheaders)
        {
-               SendHeaders(n->str().length(),response);
+               log(DEBUG,"Sending page");
+               SendHeaders(n->str().length(), response, extraheaders);
                this->Write(n->str());
        }
 };
@@ -283,10 +295,11 @@ class ModuleHttp : public Module
 
        char* OnRequest(Request* request)
        {
+               log(DEBUG,"Got HTTPDocument object");
                claimed = true;
                HTTPDocument* doc = (HTTPDocument*)request->GetData();
                HttpSocket* sock = (HttpSocket*)doc->sock;
-               sock->Page(doc->GetDocument(), doc->GetResponseCode());
+               sock->Page(doc->GetDocument(), doc->GetResponseCode(), doc->GetExtraHeaders());
                return NULL;
        }