From: Paul G. <pa...@us...> - 2004-10-11 16:22:34
|
Update of /cvsroot/azureus/azureus2/org/gudy/azureus2/core3/peer/impl/control In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29856/org/gudy/azureus2/core3/peer/impl/control Modified Files: PEPeerControlImpl.java Log Message: tidy up of peer_transport loops calling closeAll which can recursively remove entries from teh list Index: PEPeerControlImpl.java =================================================================== RCS file: /cvsroot/azureus/azureus2/org/gudy/azureus2/core3/peer/impl/control/PEPeerControlImpl.java,v retrieving revision 1.182 retrieving revision 1.183 diff -u -d -r1.182 -r1.183 --- PEPeerControlImpl.java 11 Oct 2004 15:36:35 -0000 1.182 +++ PEPeerControlImpl.java 11 Oct 2004 16:22:20 -0000 1.183 @@ -1539,6 +1539,10 @@ try{ _peer_transports_mon.enter(); + // although we should take a copy of the list here (as closeAll removes from it) + // we don't (for perf reasons) as checkSeeds is called often and any missed entries will be picked up + // next iteration + for (int i = 0; i < _peer_transports.size(); i++) { PEPeerTransport pc = (PEPeerTransport) _peer_transports.get(i); if (pc != null && pc.getState() == PEPeer.TRANSFERING && pc.isSeed()) { @@ -2434,8 +2438,12 @@ try{ _peer_transports_mon.enter(); - for (int i=0; i < _peer_transports.size(); i++) { - PEPeerTransport conn = (PEPeerTransport)_peer_transports.get( i ); + // copy as closeAll removed from list + + ArrayList pt_copy = new ArrayList( _peer_transports ); + + for (int i=0; i < pt_copy.size(); i++) { + PEPeerTransport conn = (PEPeerTransport)pt_copy.get( i ); if ( IpFilterManagerFactory.getSingleton().getIPFilter().isInRange( conn.getIp(), _downloadManager.getDisplayName() )) { conn.closeAll( "IPFilter banned IP address", false, false ); } |