diff --git a/core/src/main/java/org/bitcoinj/core/PeerGroup.java b/core/src/main/java/org/bitcoinj/core/PeerGroup.java index b98bd2c0bcb..32840968922 100644 --- a/core/src/main/java/org/bitcoinj/core/PeerGroup.java +++ b/core/src/main/java/org/bitcoinj/core/PeerGroup.java @@ -979,22 +979,25 @@ public void addAddress(PeerAddress peerAddress) { int newMax; lock.lock(); try { - addInactive(peerAddress); - newMax = getMaxConnections() + 1; + if( addInactive(peerAddress) ) { + newMax = getMaxConnections() + 1; + setMaxConnections(newMax); + } } finally { lock.unlock(); } - setMaxConnections(newMax); } - private void addInactive(PeerAddress peerAddress) { + private boolean addInactive(PeerAddress peerAddress) { lock.lock(); try { // Deduplicate - if (backoffMap.containsKey(peerAddress)) - return; + if (backoffMap.containsKey(peerAddress)) { + return false; + } backoffMap.put(peerAddress, new ExponentialBackoff(peerBackoffParams)); inactives.offer(peerAddress); + return true; } finally { lock.unlock(); }