From 3f1382da7e4babd7cbec03c2208cd3f8f1f1e67c Mon Sep 17 00:00:00 2001 From: Oscar Guindzberg Date: Thu, 20 Dec 2018 13:31:19 -0300 Subject: [PATCH] PeerGroup: Limit number of Bitcoin network peers at re-connect after connection loss Cherry pick https://github.com/bisq-network/bitcoinj/commit/e112b139d1f10c2245f78ec5dab93c19f5f8aca2 Cherry pick https://github.com/bisq-network/bitcoinj/commit/093d5e43e7e3465893e1a7dfd12c69172de33f0f Cherry pick https://github.com/bisq-network/bitcoinj/commit/cbac86338ab74312d71977465218c404560cb9d6 --- core/src/main/java/org/bitcoinj/core/PeerGroup.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/org/bitcoinj/core/PeerGroup.java b/core/src/main/java/org/bitcoinj/core/PeerGroup.java index 7aaa1ad0bec..483bde03cd9 100644 --- a/core/src/main/java/org/bitcoinj/core/PeerGroup.java +++ b/core/src/main/java/org/bitcoinj/core/PeerGroup.java @@ -588,7 +588,12 @@ public void go() { executor.schedule(this, delay, TimeUnit.MILLISECONDS); return; } - connectTo(addrToTry, false, vConnectTimeoutMillis); + + // 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. + if(pendingPeers.size() + peers.size() < maxConnections) + connectTo(addrToTry, false, vConnectTimeoutMillis); } finally { lock.unlock(); }