From: Sven Wegener Date: Mon, 3 Dec 2018 13:27:37 +0000 (+0100) Subject: Restore 'Connection: close' behaviour in HTTP responses X-Git-Tag: v2.11.0-rc1~283^2~1 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a83dbc9de5777f89d79b9669b9da66888b926905;p=icinga2 Restore 'Connection: close' behaviour in HTTP responses Actually the `corked` functionality caused problems with not closing connections properly. Full Analysis: https://github.com/Icinga/icinga2/issues/6799#issuecomment-443710338 Full credits to @swegener :) fixes #6799 --- diff --git a/lib/remote/httpresponse.cpp b/lib/remote/httpresponse.cpp index fe67052c9..ef0df7e81 100644 --- a/lib/remote/httpresponse.cpp +++ b/lib/remote/httpresponse.cpp @@ -111,6 +111,9 @@ void HttpResponse::Finish() } m_State = HttpResponseEnd; + + 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;