From b18091f63cec716d03fb7fcfec78fae286796196 Mon Sep 17 00:00:00 2001 From: Brannon King Date: Thu, 30 Jan 2020 15:39:22 -0700 Subject: [PATCH] backported networking tweaks --- src/net.cpp | 15 +++++++++------ src/net_processing.cpp | 5 ++++- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/net.cpp b/src/net.cpp index 50fbb8163..0f60c6abf 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -172,7 +172,7 @@ CAddress GetLocalAddress(const CNetAddr *paddrPeer, ServiceFlags nLocalServices) static int GetnScore(const CService& addr) { LOCK(cs_mapLocalHost); - if (mapLocalHost.count(addr) == LOCAL_NONE) + if (mapLocalHost.count(addr) == 0) return 0; return mapLocalHost[addr].nScore; } @@ -926,7 +926,8 @@ size_t CConnman::SocketSendData(CNode *pnode) const int nErr = WSAGetLastError(); if (nErr != WSAEWOULDBLOCK && nErr != WSAEMSGSIZE && nErr != WSAEINTR && nErr != WSAEINPROGRESS) { - LogPrintf("socket send error %s\n", NetworkErrorString(nErr)); + LogPrintf("socket send error: %s%s\n", NetworkErrorString(nErr), + fLogIPs ? (", peeraddr=" + pnode->addrName) : std::string()); pnode->CloseSocketDisconnect(); } } @@ -1325,6 +1326,9 @@ void CConnman::ThreadSocketHandler() } } + if (interruptNet) + return; + #ifdef USE_POLL std::vector vpollfds; vpollfds.reserve(pollfds.size()); @@ -1359,8 +1363,6 @@ void CConnman::ThreadSocketHandler() } #endif - if (interruptNet) - return; // // Accept new connections // @@ -1385,7 +1387,7 @@ void CConnman::ThreadSocketHandler() for (CNode* pnode : vNodesCopy) { if (interruptNet) - return; + break; // // Receive @@ -1450,7 +1452,8 @@ void CConnman::ThreadSocketHandler() if (nErr != WSAEWOULDBLOCK && nErr != WSAEMSGSIZE && nErr != WSAEINTR && nErr != WSAEINPROGRESS) { if (!pnode->fDisconnect) - LogPrintf("socket recv error %s\n", NetworkErrorString(nErr)); + LogPrintf("socket recv error: %s%s\n", NetworkErrorString(nErr), + fLogIPs ? (", peeraddr=" + pnode->addrName) : std::string()); pnode->CloseSocketDisconnect(); } } diff --git a/src/net_processing.cpp b/src/net_processing.cpp index 88999ba73..0be47f2b3 100644 --- a/src/net_processing.cpp +++ b/src/net_processing.cpp @@ -1981,7 +1981,9 @@ bool static ProcessMessage(CNode* pfrom, const std::string& strCommand, CDataStr { pfrom->AddInventoryKnown(inv); if (fBlocksOnly) { - LogPrint(BCLog::NET, "transaction (%s) inv sent in violation of protocol peer=%d\n", inv.hash.ToString(), pfrom->GetId()); + LogPrint(BCLog::NET, "transaction (%s) inv sent in violation of protocol, disconnecting peer=%d\n", inv.hash.ToString(), pfrom->GetId()); + pfrom->fDisconnect = true; + return true; } else if (!fAlreadyHave && !fImporting && !fReindex && !IsInitialBlockDownload()) { pfrom->AskFor(inv); } @@ -2206,6 +2208,7 @@ bool static ProcessMessage(CNode* pfrom, const std::string& strCommand, CDataStr if (!fRelayTxes && (!pfrom->fWhitelisted || !gArgs.GetBoolArg("-whitelistrelay", DEFAULT_WHITELISTRELAY))) { LogPrint(BCLog::NET, "transaction sent in violation of protocol peer=%d\n", pfrom->GetId()); + pfrom->fDisconnect = true; return true; }