John Newbery
2021-02-16 15:55:03 +00:00
parent 2b2ab9ab78
commit 5ed535a02f
3 changed files with 9 additions and 6 deletions

View File

@@ -1255,9 +1255,10 @@ void CConnman::NotifyNumConnectionsChanged()
}
}
bool CConnman::RunInactivityChecks(const CNode& node) const
bool CConnman::ShouldRunInactivityChecks(const CNode& node, std::optional<int64_t> now_in) const
{
return GetSystemTimeInSeconds() > node.nTimeConnected + m_peer_connect_timeout;
const int64_t now = now_in ? now_in.value() : GetSystemTimeInSeconds();
return node.nTimeConnected + m_peer_connect_timeout < now;
}
bool CConnman::InactivityCheck(const CNode& node) const
@@ -1266,6 +1267,8 @@ bool CConnman::InactivityCheck(const CNode& node) const
// use setmocktime in the tests).
int64_t now = GetSystemTimeInSeconds();
if (!ShouldRunInactivityChecks(node, now)) return false;
if (node.nLastRecv == 0 || node.nLastSend == 0) {
LogPrint(BCLog::NET, "socket no message in first %i seconds, %d %d peer=%d\n", m_peer_connect_timeout, node.nLastRecv != 0, node.nLastSend != 0, node.GetId());
return true;
@@ -1562,7 +1565,7 @@ void CConnman::SocketHandler()
if (bytes_sent) RecordBytesSent(bytes_sent);
}
if (RunInactivityChecks(*pnode) && InactivityCheck(*pnode)) pnode->fDisconnect = true;
if (InactivityCheck(*pnode)) pnode->fDisconnect = true;
}
{
LOCK(cs_vNodes);