From e112b139d1f10c2245f78ec5dab93c19f5f8aca2 Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Thu, 16 Jun 2016 14:34:48 +0200 Subject: [PATCH] Limit nr. of Bitcoin network peers at re-connect after connection loss --- core/src/main/java/org/bitcoinj/core/PeerGroup.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/core/src/main/java/org/bitcoinj/core/PeerGroup.java b/core/src/main/java/org/bitcoinj/core/PeerGroup.java index e3fc62b4e21..a81891bd5d2 100644 --- a/core/src/main/java/org/bitcoinj/core/PeerGroup.java +++ b/core/src/main/java/org/bitcoinj/core/PeerGroup.java @@ -1221,6 +1221,14 @@ protected Peer connectTo(PeerAddress address, boolean incrementMaxConnections, i ver.time = Utils.currentTimeSeconds(); Peer peer = new Peer(params, ver, address, chain, downloadTxDependencies); + + // BitcoinJ gets too many connections after a connection loss and reconnect as it adds up a lot of + // potential candidates and then try to connect to all of those when getting connection again. + // A check for maxConnections is required to not exceed connections. + // TODO: Review if the return of the peer cause any issues. + if(pendingPeers.size() + peers.size() >= maxConnections) + return peer; + peer.addEventListener(startupListener, Threading.SAME_THREAD); peer.setMinProtocolVersion(vMinRequiredProtocolVersion); pendingPeers.add(peer);