diff options
| author | Wladimir J. van der Laan <[email protected]> | 2015-07-10 15:06:50 +0200 |
|---|---|---|
| committer | Wladimir J. van der Laan <[email protected]> | 2015-07-10 15:07:15 +0200 |
| commit | 445220544e05d36a47f03d94181e00c52e65a4d6 (patch) | |
| tree | 996bc2d9546234029fc570740c2d35a7c30d8f7a /src/net.cpp | |
| parent | Merge pull request #6384 (diff) | |
| parent | Added -whiteconnections=<n> option (diff) | |
| download | discoin-445220544e05d36a47f03d94181e00c52e65a4d6.tar.xz discoin-445220544e05d36a47f03d94181e00c52e65a4d6.zip | |
Merge pull request #5288
e3cae52 Added -whiteconnections=<n> option (Josh Lehan)
Diffstat (limited to 'src/net.cpp')
| -rw-r--r-- | src/net.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/net.cpp b/src/net.cpp index 950311ee3..2c7ba0ca7 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -79,6 +79,7 @@ uint64_t nLocalHostNonce = 0; static std::vector<ListenSocket> vhListenSocket; CAddrMan addrman; int nMaxConnections = 125; +int nWhiteConnections = 0; bool fAddressesInitialized = false; vector<CNode*> vNodes; @@ -928,6 +929,7 @@ void ThreadSocketHandler() SOCKET hSocket = accept(hListenSocket.socket, (struct sockaddr*)&sockaddr, &len); CAddress addr; int nInbound = 0; + int nMaxInbound = nMaxConnections - MAX_OUTBOUND_CONNECTIONS; if (hSocket != INVALID_SOCKET) if (!addr.SetSockAddr((const struct sockaddr*)&sockaddr)) @@ -947,8 +949,14 @@ void ThreadSocketHandler() if (nErr != WSAEWOULDBLOCK) LogPrintf("socket error accept failed: %s\n", NetworkErrorString(nErr)); } - else if (nInbound >= nMaxConnections - MAX_OUTBOUND_CONNECTIONS) + else if (nInbound >= nMaxInbound) { + LogPrint("net", "connection from %s dropped (full)\n", addr.ToString()); + CloseSocket(hSocket); + } + else if (!whitelisted && (nInbound >= (nMaxInbound - nWhiteConnections))) + { + LogPrint("net", "connection from %s dropped (non-whitelisted)\n", addr.ToString()); CloseSocket(hSocket); } else if (CNode::IsBanned(addr) && !whitelisted) @@ -962,6 +970,8 @@ void ThreadSocketHandler() pnode->AddRef(); pnode->fWhitelisted = whitelisted; + LogPrint("net", "connection from %s accepted\n", addr.ToString()); + { LOCK(cs_vNodes); vNodes.push_back(pnode); @@ -2295,4 +2305,4 @@ void DumpBanlist() LogPrint("net", "Flushed %d banned node ips/subnets to banlist.dat %dms\n", banmap.size(), GetTimeMillis() - nStart); -}
\ No newline at end of file +} |