From 4698dd9a0230a58e8d83eab76315f550e016ec21 Mon Sep 17 00:00:00 2001 From: Chris Moore Date: Sun, 23 Jan 2011 00:08:09 -0800 Subject: [PATCH] Fix -maxconnections. It used to account for the 8 outbound connections twice when calculating the number of slots left for incoming connections. --- net.cpp | 15 ++++++++++++++- 1 files changed, 14 insertions(+), 1 deletions(-) diff --git a/net.cpp b/net.cpp index a626acd..bfa6b05 100644 --- a/net.cpp +++ b/net.cpp @@ -688,12 +688,25 @@ void ThreadSocketHandler2(void* parg) socklen_t len = sizeof(sockaddr); SOCKET hSocket = accept(hListenSocket, (struct sockaddr*)&sockaddr, &len); CAddress addr(sockaddr); + bool fLimitConnections = false; + int nInbound = 0; + + if (mapArgs.count("-maxconnections")) + fLimitConnections = true; + + if (fLimitConnections) + { + CRITICAL_BLOCK(cs_vNodes) + foreach(CNode* pnode, vNodes) + if (pnode->fInbound) + nInbound++; + } if (hSocket == INVALID_SOCKET) { if (WSAGetLastError() != WSAEWOULDBLOCK) printf("socket error accept failed: %d\n", WSAGetLastError()); } - else if (mapArgs.count("-maxconnections") && (int)vNodes.size() >= atoi(mapArgs["-maxconnections"]) - MAX_OUTBOUND_CONNECTIONS) + else if (fLimitConnections && nInbound >= atoi(mapArgs["-maxconnections"]) - MAX_OUTBOUND_CONNECTIONS) { closesocket(hSocket); } -- 1.7.1