From 3816c791930b5ea3b6dae247257a4b343731c6d8 Mon Sep 17 00:00:00 2001 From: ragnarok <ragnarok> Date: Fri, 21 Oct 2005 00:10:13 +0000 Subject: [PATCH] Clean up some possible thread safety issues. --- .../java/src/org/klomp/snark/PeerCoordinator.java | 11 ++++++----- apps/i2psnark/java/src/org/klomp/snark/Piece.java | 3 ++- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java index 9dbe74836d..83c3329b6b 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java @@ -511,11 +511,12 @@ public class PeerCoordinator implements PeerListener { // Unchoke some random other peer unchokePeer(); - - // Don't count disconnected peers for the rarest-first calculations - for(Iterator iter = wantedPieces.iterator(); iter.hasNext(); ) { - Piece piece = (Piece)iter.next(); - piece.removePeer(peer); + synchronized(wantedPieces) { + // Don't count disconnected peers for the rarest-first calculations + for(Iterator iter = wantedPieces.iterator(); iter.hasNext(); ) { + Piece piece = (Piece)iter.next(); + piece.removePeer(peer); + } } } } diff --git a/apps/i2psnark/java/src/org/klomp/snark/Piece.java b/apps/i2psnark/java/src/org/klomp/snark/Piece.java index c6189eb634..6e3cb2344c 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Piece.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Piece.java @@ -2,6 +2,7 @@ package org.klomp.snark; import java.util.Set; import java.util.HashSet; +import java.util.Collections; public class Piece implements Comparable { @@ -11,7 +12,7 @@ public class Piece implements Comparable { public Piece(int id) { this.id = id; - this.peers = new HashSet(); + this.peers = Collections.synchronizedSet(new HashSet()); this.requested = false; } -- GitLab