diff --git a/ethereumj-core/src/main/java/org/ethereum/net/eth/handler/EthHandler.java b/ethereumj-core/src/main/java/org/ethereum/net/eth/handler/EthHandler.java index 3ba23d2bb8..2d169a521a 100644 --- a/ethereumj-core/src/main/java/org/ethereum/net/eth/handler/EthHandler.java +++ b/ethereumj-core/src/main/java/org/ethereum/net/eth/handler/EthHandler.java @@ -282,6 +282,7 @@ public void changeState(SyncStateName newState) { if(++blocksLackHits < BLOCKS_LACK_MAX_HITS) { return; } + blocksLackHits = 0; // reset } syncState = newState; } diff --git a/ethereumj-core/src/main/java/org/ethereum/sync/SyncManager.java b/ethereumj-core/src/main/java/org/ethereum/sync/SyncManager.java index d7d2c06e3e..d1412cf0c8 100644 --- a/ethereumj-core/src/main/java/org/ethereum/sync/SyncManager.java +++ b/ethereumj-core/src/main/java/org/ethereum/sync/SyncManager.java @@ -413,12 +413,14 @@ private void removeUselessPeers() { List removed = new ArrayList<>(); for (Channel peer : pool) { if (peer.hasBlocksLack()) { - logger.info("Peer {}: has no more blocks, removing", Utils.getNodeIdShort(peer.getPeerId())); + logger.info("{}: has no more blocks, ban", peer); removed.add(peer); updateLowerUsefulDifficulty(peer.getTotalDifficulty()); } } - pool.removeAll(removed); + for (Channel peer : removed) { + pool.ban(peer); + } } private void fillUpPeersPool() {