Author: toad
Date: 2008-07-29 12:47:34 +0000 (Tue, 29 Jul 2008)
New Revision: 21473

Modified:
   branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
Log:
Paranoia w.r.t. fix.

Modified: 
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java 
2008-07-29 12:44:59 UTC (rev 21472)
+++ branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java 
2008-07-29 12:47:34 UTC (rev 21473)
@@ -660,13 +660,22 @@
                SplitFileFetcherSubSegment sub;
                if(persistent)
                        container.activate(subSegments, 1);
+               SplitFileFetcherSubSegment ret = null;
+               int dupes = 0;
                synchronized(this) {
                        for(int i=0;i<subSegments.size();i++) {
                                sub = (SplitFileFetcherSubSegment) 
subSegments.get(i);
                                if(persistent) container.activate(sub, 1);
-                               if(sub.retryCount == retryCount) return sub;
-                               if(persistent) container.deactivate(sub, 1);
+                               if(sub.retryCount == retryCount) {
+                                       if(ret != null) {
+                                               Logger.error(this, "Duplicate 
subsegment (count="+dupes+"): "+ret+" and "+sub+" for retry count 
"+retryCount+" on "+this);
+                                               dupes++;
+                                       } else
+                                               ret = sub;
+                               }
+                               if(persistent && sub != ret) 
container.deactivate(sub, 1);
                        }
+                       if(ret != null) return ret;
                        if(noCreate) return null;
                        if(persistent)
                                container.activate(parent, 1);


Reply via email to