diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerState.java b/apps/i2psnark/java/src/org/klomp/snark/PeerState.java index 80de27c05..2f02db39a 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerState.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerState.java @@ -462,16 +462,12 @@ class PeerState /** * Adds a new request to the outstanding requests list. */ - private void addRequest() + synchronized private void addRequest() { boolean more_pieces = true; while (more_pieces) { - synchronized(this) - { - more_pieces = outstandingRequests.size() < MAX_PIPELINE; - } - + more_pieces = outstandingRequests.size() < MAX_PIPELINE; // We want something and we don't have outstanding requests? if (more_pieces && lastRequest == null) more_pieces = requestNextPiece(); @@ -479,19 +475,14 @@ class PeerState { int pieceLength; boolean isLastChunk; - synchronized(this) - { - pieceLength = metainfo.getPieceLength(lastRequest.piece); - isLastChunk = lastRequest.off + lastRequest.len == pieceLength; - } + pieceLength = metainfo.getPieceLength(lastRequest.piece); + isLastChunk = lastRequest.off + lastRequest.len == pieceLength; // Last part of a piece? if (isLastChunk) more_pieces = requestNextPiece(); else { - synchronized(this) - { int nextPiece = lastRequest.piece; int nextBegin = lastRequest.off + PARTSIZE; byte[] bs = lastRequest.bs; @@ -504,7 +495,6 @@ class PeerState if (!choked) out.sendRequest(req); lastRequest = req; - } } } } @@ -523,8 +513,6 @@ class PeerState // Check for adopting an orphaned partial piece Request r = listener.getPeerPartial(bitfield); if (r != null) { - synchronized(this) - { // Check that r not already in outstandingRequests int[] arr = getRequestedPieces(); boolean found = false; @@ -541,13 +529,10 @@ class PeerState lastRequest = r; return true; } - } } int nextPiece = listener.wantPiece(peer, bitfield); if (_log.shouldLog(Log.DEBUG)) _log.debug(peer + " want piece " + nextPiece); - synchronized(this) - { if (nextPiece != -1 && (lastRequest == null || lastRequest.piece != nextPiece)) { @@ -562,7 +547,6 @@ class PeerState lastRequest = req; return true; } - } } return false; diff --git a/history.txt b/history.txt index 6f3c6153d..e6ef9e03d 100644 --- a/history.txt +++ b/history.txt @@ -1,4 +1,8 @@ -$Id: history.txt,v 1.528 2006-09-26 23:44:13 complication Exp $ +$Id: history.txt,v 1.529 2006-09-27 01:00:33 jrandom Exp $ + +2006-09-29 zzz + * i2psnark: Second try at synchronization fix - synch addRequest() + completely rather than just portions of it and requestNextPiece() 2006-09-27 jrandom * added HMAC-SHA256 diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index ffe8aac99..ea898896e 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -15,9 +15,9 @@ import net.i2p.CoreVersion; * */ public class RouterVersion { - public final static String ID = "$Revision: 1.463 $ $Date: 2006-09-26 23:02:15 $"; + public final static String ID = "$Revision: 1.464 $ $Date: 2006-09-27 01:00:37 $"; public final static String VERSION = "0.6.1.25"; - public final static long BUILD = 10; + public final static long BUILD = 11; public static void main(String args[]) { System.out.println("I2P Router version: " + VERSION + "-" + BUILD); System.out.println("Router ID: " + RouterVersion.ID);