Merge pull request #6658 from Icinga/bugfix/api-connection-close-req-by-client

Ensure that HTTP/1.0 or 'Connection: close' headers are properly disconnecting the client
This commit is contained in:
Michael Friedrich 2018-10-09 13:49:22 +02:00 committed by GitHub
commit 58cfc3955d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 3 deletions

View File

@ -111,9 +111,6 @@ 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)

View File

@ -358,6 +358,13 @@ void HttpServerConnection::DataAvailableHandler()
}
m_RequestQueue.Enqueue(std::bind(&Stream::SetCorked, m_Stream, false));
/* 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;