Author: toad
Date: 2008-11-27 01:32:24 +0000 (Thu, 27 Nov 2008)
New Revision: 23897
Modified:
trunk/freenet/src/freenet/support/io/TempBucketFactory.java
Log:
Fix more ConcurrentModificationException's when fetching freesites.
Modified: trunk/freenet/src/freenet/support/io/TempBucketFactory.java
===================================================================
--- trunk/freenet/src/freenet/support/io/TempBucketFactory.java 2008-11-27
01:07:53 UTC (rev 23896)
+++ trunk/freenet/src/freenet/support/io/TempBucketFactory.java 2008-11-27
01:32:24 UTC (rev 23897)
@@ -7,7 +7,9 @@
import java.io.InputStream;
import java.io.OutputStream;
import java.lang.ref.WeakReference;
+import java.util.Iterator;
import java.util.LinkedList;
+import java.util.ListIterator;
import java.util.Queue;
import java.util.Random;
import java.util.Vector;
@@ -89,16 +91,23 @@
}
private synchronized void closeInputStreams(boolean forFree) {
- for(TempBucketInputStream is : tbis) {
- try {
- if(forFree)
- is.close();
- else
- is._maybeResetInputStream();
- } catch(IOException e) {
- Closer.close(is);
- tbis.remove(is);
- }
+ for(ListIterator<TempBucketInputStream> i =
tbis.listIterator(); i.hasNext();) {
+ TempBucketInputStream is = i.next();
+ if(forFree) {
+ i.remove();
+ try {
+ is.close();
+ } catch (IOException e) {
+ Logger.error(this,
"Caught "+e+" closing "+is);
+ }
+ } else {
+ try {
+
is._maybeResetInputStream();
+ } catch(IOException e) {
+ i.remove();
+ Closer.close(is);
+ }
+ }
}
}
_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs