backported networking tweaks

This commit is contained in:
Brannon King 2020-01-30 15:39:22 -07:00
parent 55730549af
commit b18091f63c
2 changed files with 13 additions and 7 deletions

View file

@ -172,7 +172,7 @@ CAddress GetLocalAddress(const CNetAddr *paddrPeer, ServiceFlags nLocalServices)
static int GetnScore(const CService& addr) static int GetnScore(const CService& addr)
{ {
LOCK(cs_mapLocalHost); LOCK(cs_mapLocalHost);
if (mapLocalHost.count(addr) == LOCAL_NONE) if (mapLocalHost.count(addr) == 0)
return 0; return 0;
return mapLocalHost[addr].nScore; return mapLocalHost[addr].nScore;
} }
@ -926,7 +926,8 @@ size_t CConnman::SocketSendData(CNode *pnode) const
int nErr = WSAGetLastError(); int nErr = WSAGetLastError();
if (nErr != WSAEWOULDBLOCK && nErr != WSAEMSGSIZE && nErr != WSAEINTR && nErr != WSAEINPROGRESS) 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(); pnode->CloseSocketDisconnect();
} }
} }
@ -1325,6 +1326,9 @@ void CConnman::ThreadSocketHandler()
} }
} }
if (interruptNet)
return;
#ifdef USE_POLL #ifdef USE_POLL
std::vector<struct pollfd> vpollfds; std::vector<struct pollfd> vpollfds;
vpollfds.reserve(pollfds.size()); vpollfds.reserve(pollfds.size());
@ -1359,8 +1363,6 @@ void CConnman::ThreadSocketHandler()
} }
#endif #endif
if (interruptNet)
return;
// //
// Accept new connections // Accept new connections
// //
@ -1385,7 +1387,7 @@ void CConnman::ThreadSocketHandler()
for (CNode* pnode : vNodesCopy) for (CNode* pnode : vNodesCopy)
{ {
if (interruptNet) if (interruptNet)
return; break;
// //
// Receive // Receive
@ -1450,7 +1452,8 @@ void CConnman::ThreadSocketHandler()
if (nErr != WSAEWOULDBLOCK && nErr != WSAEMSGSIZE && nErr != WSAEINTR && nErr != WSAEINPROGRESS) if (nErr != WSAEWOULDBLOCK && nErr != WSAEMSGSIZE && nErr != WSAEINTR && nErr != WSAEINPROGRESS)
{ {
if (!pnode->fDisconnect) 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(); pnode->CloseSocketDisconnect();
} }
} }

View file

@ -1981,7 +1981,9 @@ bool static ProcessMessage(CNode* pfrom, const std::string& strCommand, CDataStr
{ {
pfrom->AddInventoryKnown(inv); pfrom->AddInventoryKnown(inv);
if (fBlocksOnly) { 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()) { } else if (!fAlreadyHave && !fImporting && !fReindex && !IsInitialBlockDownload()) {
pfrom->AskFor(inv); 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))) if (!fRelayTxes && (!pfrom->fWhitelisted || !gArgs.GetBoolArg("-whitelistrelay", DEFAULT_WHITELISTRELAY)))
{ {
LogPrint(BCLog::NET, "transaction sent in violation of protocol peer=%d\n", pfrom->GetId()); LogPrint(BCLog::NET, "transaction sent in violation of protocol peer=%d\n", pfrom->GetId());
pfrom->fDisconnect = true;
return true; return true;
} }