diff --git a/src/net.cpp b/src/net.cpp index 7f46d85d186e3..8b4b809f51d42 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -1321,10 +1321,10 @@ void CConnman::ThreadSocketHandler() } } - isInSelect = true; + wakeupSelectNeeded = true; int nSelect = select(have_fds ? hSocketMax + 1 : 0, &fdsetRecv, &fdsetSend, &fdsetError, &timeout); - isInSelect = false; + wakeupSelectNeeded = false; if (interruptNet) return; @@ -1521,6 +1521,8 @@ void CConnman::WakeSelect() LogPrint("net", "write to wakeupPipe failed\n"); } #endif + + wakeupSelectNeeded = false; } @@ -3236,7 +3238,7 @@ void CConnman::PushMessage(CNode* pnode, CSerializedNetMsg&& msg, bool allowOpti if (optimisticSend == true) nBytesSent = SocketSendData(pnode); // wake up select() call in case there was no pending data before (so it was not selecting this socket for sending) - else if (!hasPendingData && isInSelect) + else if (!hasPendingData && wakeupSelectNeeded) WakeSelect(); } if (nBytesSent) diff --git a/src/net.h b/src/net.h index a09b6b85052bf..4bf1a8206f59c 100644 --- a/src/net.h +++ b/src/net.h @@ -546,7 +546,7 @@ class CConnman /** a pipe which is added to select() calls to wakeup before the timeout */ int wakeupPipe[2]{-1,-1}; #endif - std::atomic isInSelect{false}; + std::atomic wakeupSelectNeeded{false}; std::thread threadDNSAddressSeed; std::thread threadSocketHandler;