Update the submodule trantor
This commit is contained in:
parent
8b2bb4796d
commit
4204ad733f
|
@ -441,6 +441,7 @@ void HttpAppFrameworkImpl::onWebsockDisconnect(const WebSocketConnectionPtr &wsC
|
|||
}
|
||||
void HttpAppFrameworkImpl::onConnection(const TcpConnectionPtr &conn)
|
||||
{
|
||||
static std::mutex mtx;
|
||||
if (conn->connected())
|
||||
{
|
||||
if (_connectionNum.fetch_add(1) >= _maxConnectionNum)
|
||||
|
@ -451,14 +452,17 @@ void HttpAppFrameworkImpl::onConnection(const TcpConnectionPtr &conn)
|
|||
else if (_maxConnectionNumPerIP > 0)
|
||||
{
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(mtx);
|
||||
auto iter = _connectionsNumMap.find(conn->peerAddr().toIp());
|
||||
if (iter == _connectionsNumMap.end())
|
||||
{
|
||||
_connectionsNumMap[conn->peerAddr().toIp()] = 0;
|
||||
_connectionsNumMap[conn->peerAddr().toIp()] = 1;
|
||||
}
|
||||
if (_connectionsNumMap[conn->peerAddr().toIp()]++ >= _maxConnectionNumPerIP)
|
||||
else if (iter->second++ > _maxConnectionNumPerIP)
|
||||
{
|
||||
conn->forceClose();
|
||||
conn->getLoop()->queueInLoop([conn]() {
|
||||
conn->forceClose();
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -466,9 +470,18 @@ void HttpAppFrameworkImpl::onConnection(const TcpConnectionPtr &conn)
|
|||
else
|
||||
{
|
||||
_connectionNum--;
|
||||
if (_maxConnectionNumPerIP > 0 && _connectionsNumMap.find(conn->peerAddr().toIp()) != _connectionsNumMap.end())
|
||||
if (_maxConnectionNumPerIP > 0)
|
||||
{
|
||||
_connectionsNumMap[conn->peerAddr().toIp()]--;
|
||||
std::lock_guard<std::mutex> lock(mtx);
|
||||
auto iter = _connectionsNumMap.find(conn->peerAddr().toIp());
|
||||
if (iter != _connectionsNumMap.end())
|
||||
{
|
||||
iter->second--;
|
||||
if (iter->second <= 0)
|
||||
{
|
||||
_connectionsNumMap.erase(iter);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -184,7 +184,7 @@ class HttpAppFrameworkImpl : public HttpAppFramework
|
|||
size_t _maxConnectionNumPerIP = 0;
|
||||
|
||||
std::atomic<uint64_t> _connectionNum;
|
||||
std::unordered_map<std::string, std::atomic<size_t>> _connectionsNumMap;
|
||||
std::unordered_map<std::string, size_t> _connectionsNumMap;
|
||||
|
||||
bool _runAsDaemon = false;
|
||||
bool _relaunchOnError = false;
|
||||
|
|
2
trantor
2
trantor
|
@ -1 +1 @@
|
|||
Subproject commit 50f5401a0b97fcf94ced323d0913c2cb193f26d7
|
||||
Subproject commit e4da5dee4293475ea176a6615db0feb8bf98f833
|
Loading…
Reference in New Issue