From 10872f751eed41a5a4d8ab6ba4c6687d1eb7dc09 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Tue, 22 May 2012 18:18:30 +0000 Subject: [PATCH] - Prevent torrent shutdown when changing file priority to skip --- .../java/src/org/klomp/snark/MetaInfo.java | 15 ++++++++++++--- .../java/src/org/klomp/snark/PeerState.java | 1 + 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/MetaInfo.java b/apps/i2psnark/java/src/org/klomp/snark/MetaInfo.java index 7eef4e49b4..a9b70041c8 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/MetaInfo.java +++ b/apps/i2psnark/java/src/org/klomp/snark/MetaInfo.java @@ -424,13 +424,22 @@ public class MetaInfo } /** + * @return good * @since 0.9.1 */ - boolean checkPiece(PartialPiece pp) throws IOException { + boolean checkPiece(PartialPiece pp) { MessageDigest sha1 = SHA1.getInstance(); int piece = pp.getPiece(); - - byte[] hash = pp.getHash(); + byte[] hash; + try { + hash = pp.getHash(); + } catch (IOException ioe) { + // Could be caused by closing a peer connnection + // we don't want the exception to propagate through + // to Storage.putPiece() + _log.warn("Error checking", ioe); + return false; + } for (int i = 0; i < 20; i++) if (hash[i] != piece_hashes[20 * piece + i]) return false; diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerState.java b/apps/i2psnark/java/src/org/klomp/snark/PeerState.java index 04e92ba284..f41bf1b575 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerState.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerState.java @@ -308,6 +308,7 @@ class PeerState implements DataLoader + peer); // Last chunk needed for this piece? + // FIXME if priority changed to skip, we will think we're done when we aren't if (getFirstOutstandingRequest(req.getPiece()) == -1) { // warning - may block here for a while -- GitLab