From fe079a4f7e6f7166b0f4facd595987f98986eba5 Mon Sep 17 00:00:00 2001 From: antao Date: Tue, 8 Jan 2019 09:41:38 +0800 Subject: [PATCH] Fix a bug in the HttpServer class --- lib/src/HttpServer.cc | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/lib/src/HttpServer.cc b/lib/src/HttpServer.cc index 11fde78c..9c9cd7fc 100755 --- a/lib/src/HttpServer.cc +++ b/lib/src/HttpServer.cc @@ -251,26 +251,29 @@ void HttpServer::onRequest(const TcpConnectionPtr &conn, const HttpRequestImplPt { conn->getLoop()->queueInLoop([conn, req, newResp, this]() { HttpServerContext *context = any_cast(conn->getMutableContext()); - if (context && context->getFirstRequest() == req) + if (context) { - context->popFirstRequest(); - sendResponse(conn, newResp); - while (1) + if (context->getFirstRequest() == req) { - auto resp = context->getFirstResponse(); - if (resp) + context->popFirstRequest(); + sendResponse(conn, newResp); + while (1) { - context->popFirstRequest(); - sendResponse(conn, resp); + auto resp = context->getFirstResponse(); + if (resp) + { + context->popFirstRequest(); + sendResponse(conn, resp); + } + else + return; } - else - return; } - } - else - { - //some earlier requests are waiting for responses; - context->pushResponseToPipeLine(req, newResp); + else + { + //some earlier requests are waiting for responses; + context->pushResponseToPipeLine(req, newResp); + } } }); }