aboutsummaryrefslogtreecommitdiff
path: root/src/net_processing.cpp
diff options
context:
space:
mode:
authorMartin Zumsande <mzumsande@gmail.com>2021-05-29 23:58:37 +0200
committerMartin Zumsande <mzumsande@gmail.com>2021-06-17 22:00:07 +0200
commit533500d9072b7d5a36a6491784bdeb9247e91fb0 (patch)
tree2d288d71dfd1fa7567fd27bd39e2cbeb728356d6 /src/net_processing.cpp
parentb6c5d1e450dde6a54bd785504c923adfb45c7060 (diff)
downloadbitcoin-533500d9072b7d5a36a6491784bdeb9247e91fb0.tar.xz
p2p: Add timeout for AddrFetch peers
If AddrFetch peers don't send us addresses, disconnect them after a while.
Diffstat (limited to 'src/net_processing.cpp')
-rw-r--r--src/net_processing.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/net_processing.cpp b/src/net_processing.cpp
index 51d628773c..702a235993 100644
--- a/src/net_processing.cpp
+++ b/src/net_processing.cpp
@@ -4364,6 +4364,12 @@ bool PeerManagerImpl::SendMessages(CNode* pto)
const auto current_time = GetTime<std::chrono::microseconds>();
+ if (pto->IsAddrFetchConn() && current_time - std::chrono::seconds(pto->nTimeConnected) > 10 * AVG_ADDRESS_BROADCAST_INTERVAL) {
+ LogPrint(BCLog::NET, "addrfetch connection timeout; disconnecting peer=%d\n", pto->GetId());
+ pto->fDisconnect = true;
+ return true;
+ }
+
MaybeSendPing(*pto, *peer, current_time);
// MaybeSendPing may have marked peer for disconnection