diff --git a/lib/src/HttpAppFrameworkImpl.cc b/lib/src/HttpAppFrameworkImpl.cc index d5530d61..0ffad4fa 100755 --- a/lib/src/HttpAppFrameworkImpl.cc +++ b/lib/src/HttpAppFrameworkImpl.cc @@ -425,10 +425,16 @@ void HttpAppFrameworkImpl::onConnection(const TcpConnectionPtr &conn) } else { - if (_connectionNum-- == 0) +#if (CXX_STD > 14) + if (!conn->getContext().has_value()) +#else + if (conn->getContext().empty()) +#endif { - _connectionNum++; + //If the connection is connected to the SSL port and then disconnected before the SSL handshake. + return; } + _connectionNum--; if (_maxConnectionNumPerIP > 0) { std::lock_guard lock(mtx); diff --git a/lib/src/HttpAppFrameworkImpl.h b/lib/src/HttpAppFrameworkImpl.h index 668876eb..681b6399 100644 --- a/lib/src/HttpAppFrameworkImpl.h +++ b/lib/src/HttpAppFrameworkImpl.h @@ -174,12 +174,12 @@ class HttpAppFrameworkImpl : public HttpAppFramework std::string _sslCertPath; std::string _sslKeyPath; - size_t _maxConnectionNum = 100000; size_t _maxConnectionNumPerIP = 0; - - std::atomic _connectionNum; std::unordered_map _connectionsNumMap; + int64_t _maxConnectionNum = 100000; + std::atomic _connectionNum; + bool _runAsDaemon = false; bool _relaunchOnError = false; std::string _logPath = ""; diff --git a/lib/src/HttpServer.cc b/lib/src/HttpServer.cc index a497ed73..2586f5cf 100755 --- a/lib/src/HttpServer.cc +++ b/lib/src/HttpServer.cc @@ -77,10 +77,12 @@ void HttpServer::onConnection(const TcpConnectionPtr &conn) if (conn->connected()) { conn->setContext(HttpRequestParser(conn)); + _connectionCallback(conn); } else if (conn->disconnected()) { LOG_TRACE << "conn disconnected!"; + _connectionCallback(conn); HttpRequestParser *requestParser = any_cast(conn->getMutableContext()); if (requestParser) { @@ -95,7 +97,6 @@ void HttpServer::onConnection(const TcpConnectionPtr &conn) #endif } } - _connectionCallback(conn); } void HttpServer::onMessage(const TcpConnectionPtr &conn, diff --git a/trantor b/trantor index 947e415c..04d22d29 160000 --- a/trantor +++ b/trantor @@ -1 +1 @@ -Subproject commit 947e415cf2fa71f2af0c2220a86d594b1732d26e +Subproject commit 04d22d2974db2295bd441d74623ae35eecb8dd6a