From 3e2513b7b438bdf9ce0406f94e35e0b4bf01a860 Mon Sep 17 00:00:00 2001 From: brain Date: Mon, 12 May 2008 21:18:54 +0000 Subject: Backport socket closing fixes (stops sockets hanging sometimes) git-svn-id: http://svn.inspircd.org/repository/branches/1_1_stable@9715 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/modules/m_httpd.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'src/modules/m_httpd.cpp') diff --git a/src/modules/m_httpd.cpp b/src/modules/m_httpd.cpp index b7dd2b334..a6688dabb 100644 --- a/src/modules/m_httpd.cpp +++ b/src/modules/m_httpd.cpp @@ -187,6 +187,7 @@ class HttpServerSocket : public InspSocket } this->Write("Server: InspIRCd/m_httpd.so/1.1\r\nContent-Length: "+ConvToStr(size)+ "\r\nConnection: close\r\n\r\n"); + this->FlushWriteBuffer(); } virtual bool OnDataReady() @@ -228,7 +229,7 @@ class HttpServerSocket : public InspSocket { InternalState = HTTP_SERVE_SEND_DATA; SendHeaders(0, 400, ""); - Instance->SE->WantWrite(this); + SetWrite(); } else { @@ -268,7 +269,7 @@ class HttpServerSocket : public InspSocket if ((http_version != "HTTP/1.1") && (http_version != "HTTP/1.0")) { SendHeaders(0, 505, ""); - Instance->SE->WantWrite(this); + SetWrite(); } else { @@ -276,7 +277,8 @@ class HttpServerSocket : public InspSocket { SendHeaders(index->ContentSize(), 200, ""); this->Write(index->Contents()); - Instance->SE->WantWrite(this); + this->FlushWriteBuffer(); + SetWrite(); } else { @@ -287,7 +289,7 @@ class HttpServerSocket : public InspSocket if (!claimed) { SendHeaders(0, 404, ""); - Instance->SE->WantWrite(this); + SetWrite(); } } } @@ -297,6 +299,13 @@ class HttpServerSocket : public InspSocket { SendHeaders(n->str().length(), response, extraheaders); this->Write(n->str()); + this->FlushWriteBuffer(); + SetWrite(); + } + + void SetWrite() + { + this->WaitingForWriteEvent = true; Instance->SE->WantWrite(this); } -- cgit v1.3.1-10-gc9f91