wsd/LOOLWSD.cpp | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-)
New commits: commit 59dfe338cbb3cbacf04732523fed9fca42405a76 Author: Ashod Nakashian <ashod.nakash...@collabora.co.uk> Date: Tue Jan 3 17:09:13 2017 -0500 wsd: safely count the number of current connections Change-Id: I90b2436f804acd9b0295ba2ce944e8b68a59db91 Reviewed-on: https://gerrit.libreoffice.org/32715 Reviewed-by: Ashod Nakashian <ashnak...@gmail.com> Tested-by: Ashod Nakashian <ashnak...@gmail.com> diff --git a/wsd/LOOLWSD.cpp b/wsd/LOOLWSD.cpp index 141db3c..9895a76 100644 --- a/wsd/LOOLWSD.cpp +++ b/wsd/LOOLWSD.cpp @@ -1203,8 +1203,8 @@ public: request, response)) return; -#if MAX_CONNECTIONS > 0 - if (++LOOLWSD::NumConnections > MAX_CONNECTIONS) + const auto connectionNum = ++LOOLWSD::NumConnections; + if (connectionNum > MAX_CONNECTIONS) { --LOOLWSD::NumConnections; LOG_ERR("Limit on maximum number of connections of " << MAX_CONNECTIONS << " reached."); @@ -1213,18 +1213,24 @@ public: shutdownLimitReached(ws); return; } -#endif - handleClientRequest(request, response); + try + { + const auto id = LOOLWSD::GenSessionId(); + LOG_TRC("Accepted connection #" << connectionNum << " of " << + MAX_CONNECTIONS << " as session [" << id << "]."); + handleClientRequest(request, response, id); + } + catch (const std::exception& exc) + { + // Nothing to do. + } -#if MAX_CONNECTIONS > 0 --LOOLWSD::NumConnections; -#endif } - static void handleClientRequest(HTTPServerRequest& request, HTTPServerResponse& response) + static void handleClientRequest(HTTPServerRequest& request, HTTPServerResponse& response, const std::string& id) { - const auto id = LOOLWSD::GenSessionId(); Util::setThreadName("client_ws_" + id); LOG_DBG("Thread started."); @@ -2336,7 +2342,7 @@ void UnitWSD::testHandleRequest(TestRequest type, UnitHTTPServerRequest& request switch (type) { case TestRequest::Client: - ClientRequestHandler::handleClientRequest(request, response); + ClientRequestHandler::handleClientRequest(request, response, LOOLWSD::GenSessionId()); break; case TestRequest::Prisoner: PrisonerRequestHandler::handlePrisonerRequest(request, response); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits