- struct tm *timeinfo = localtime(&local);
- this->Write("HTTP/1.1 "+ConvToStr(response)+" "+Response(response)+"\r\nDate: ");
- this->Write(asctime(timeinfo));
- if (extraheaders.empty())
+ struct tm *timeinfo = gmtime(&local);
+ char *date = asctime(timeinfo);
+ date[strlen(date) - 1] = '\0';
+ rheaders.CreateHeader("Date", date);
+
+ rheaders.CreateHeader("Server", "InspIRCd/m_httpd.so/1.2");
+ rheaders.SetHeader("Content-Length", ConvToStr(size));
+
+ if (size)
+ rheaders.CreateHeader("Content-Type", "text/html");
+ else
+ rheaders.RemoveHeader("Content-Type");
+
+ /* Supporting Connection: keep-alive causes a whole world of hurt syncronizing timeouts,
+ * so remove it, its not essential for what we need.
+ */
+ rheaders.SetHeader("Connection", "Close");
+
+ this->Write(rheaders.GetFormattedHeaders());
+ this->Write("\r\n");
+ }
+
+ virtual bool OnDataReady()
+ {
+ const char* data = this->Read();
+
+ /* Check that the data read is a valid pointer and it has some content */
+ if (!data || !*data)
+ return false;
+
+ if (InternalState == HTTP_SERVE_RECV_POSTDATA)