]> granicus.if.org Git - icinga2/commitdiff
Revert: Always reset Boost beast buffer in HttpServerConnection#ProcessMessages ... 7495/head
authorMichael Friedrich <michael.friedrich@icinga.com>
Thu, 12 Sep 2019 15:00:17 +0000 (17:00 +0200)
committerMichael Friedrich <michael.friedrich@icinga.com>
Thu, 12 Sep 2019 15:00:17 +0000 (17:00 +0200)
Not a simple revert but also adds a comment for the buffer.

refs #7476

lib/remote/httpserverconnection.cpp

index 2589c9d7db5fe3e088da9f1a98164761fc6d4a8e..cdbcc7c5721afd5d99ba5a8f25eeb25678cb83d0 100644 (file)
@@ -495,6 +495,11 @@ void HttpServerConnection::ProcessMessages(boost::asio::yield_context yc)
        namespace http = beast::http;
 
        try {
+               /* Do not reset the buffer in the state machine.
+                * EnsureValidHeaders already reads from the stream into the buffer,
+                * EnsureValidBody continues. ProcessRequest() actually handles the request
+                * and needs the full buffer.
+                */
                beast::flat_buffer buf;
 
                for (;;) {
@@ -508,8 +513,6 @@ void HttpServerConnection::ProcessMessages(boost::asio::yield_context yc)
 
                        response.set(http::field::server, l_ServerHeader);
 
-                       // Best practice is to always reset the buffer.
-                       buf = {};
                        if (!EnsureValidHeaders(*m_Stream, buf, parser, response, m_ShuttingDown, yc)) {
                                break;
                        }
@@ -555,8 +558,6 @@ void HttpServerConnection::ProcessMessages(boost::asio::yield_context yc)
                                break;
                        }
 
-                       // Best practice is to always reset the buffer.
-                       buf = {};
                        if (!EnsureValidBody(*m_Stream, buf, parser, authenticatedUser, response, m_ShuttingDown, yc)) {
                                break;
                        }