diff --git a/lib/remote/httpresponse.cpp b/lib/remote/httpresponse.cpp index fe67052c9..de029b701 100644 --- a/lib/remote/httpresponse.cpp +++ b/lib/remote/httpresponse.cpp @@ -111,6 +111,15 @@ void HttpResponse::Finish() } m_State = HttpResponseEnd; + + /* Close the connection on + * a) HTTP/1.0 + * b) Connection: close in the sent header. + * + * Do this here and not in DataAvailableHandler - there might still be incoming data in there. + */ + if (m_Request->ProtocolVersion == HttpVersion10 || m_Request->Headers->Get("connection") == "close") + m_Stream->Shutdown(); } bool HttpResponse::Parse(StreamReadContext& src, bool may_wait) diff --git a/lib/remote/httpserverconnection.cpp b/lib/remote/httpserverconnection.cpp index 356a0ffba..01a58aa8d 100644 --- a/lib/remote/httpserverconnection.cpp +++ b/lib/remote/httpserverconnection.cpp @@ -362,13 +362,6 @@ void HttpServerConnection::DataAvailableHandler() close = true; } - - /* Request finished, decide whether to explicitly close the connection. */ - if (m_CurrentRequest.ProtocolVersion == HttpVersion10 || - m_CurrentRequest.Headers->Get("connection") == "close") { - m_Stream->Shutdown(); - close = true; - } } else close = true;