diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java index fccef5278dce12e434a7375495e84043eab2ac9e..33feda9f1592a9e1716ac4fed40f739e4fe4db4f 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java @@ -237,6 +237,8 @@ public class PeerCoordinator implements PeerListener peer.disconnect(); removePeerFromPieces(peer); } + // delete any saved orphan partial piece + savedRequest = null; } public void connected(Peer peer) @@ -263,6 +265,7 @@ public class PeerCoordinator implements PeerListener { if (_log.shouldLog(Log.WARN)) _log.warn("Already connected to: " + peer + ": " + old + ", inactive for " + old.getInactiveTime()); + // toDisconnect = peer to get out of synchronized(peers) peer.disconnect(false); // Don't deregister this connection/peer. } else @@ -357,7 +360,6 @@ public class PeerCoordinator implements PeerListener while (it.hasNext()) { Peer peer = (Peer)it.next(); - boolean remove = false; if (peer.isChoking() && peer.isInterested()) { count++; @@ -691,6 +693,8 @@ public class PeerCoordinator implements PeerListener private long savedRequestTime = 0; public void savePeerPartial(PeerState state) { + if (halted) + return; Request req = state.getPartialRequest(); if (req == null) return; @@ -791,7 +795,7 @@ public class PeerCoordinator implements PeerListener */ public void markUnrequested(Peer peer) { - if (peer.state == null) + if (halted || peer.state == null) return; int[] arr = peer.state.getRequestedPieces(); for (int i = 0; arr[i] >= 0; i++)