Author: toad
Date: 2009-01-24 18:26:06 +0000 (Sat, 24 Jan 2009)
New Revision: 25284

Modified:
   branches/db4o/freenet/src/freenet/client/async/SplitFileInserterSegment.java
Log:
If the insert has been cancelled, and we get an onEncodedSegment() anyway, log 
an error, free the encoded blocks, and exit without starting any inserters.


Modified: 
branches/db4o/freenet/src/freenet/client/async/SplitFileInserterSegment.java
===================================================================
--- 
branches/db4o/freenet/src/freenet/client/async/SplitFileInserterSegment.java    
    2009-01-24 18:24:41 UTC (rev 25283)
+++ 
branches/db4o/freenet/src/freenet/client/async/SplitFileInserterSegment.java    
    2009-01-24 18:26:06 UTC (rev 25284)
@@ -502,6 +502,28 @@
                        container.activate(parent, 1);
                        container.activate(parent.parent, 1);
                }
+               boolean fin;
+               synchronized(this) {
+                       fin = finished;
+               }
+               if(fin) {
+                       Logger.error(this, "Encoded segment even though segment 
finished! Freeing buckets...");
+                       for(int i=0;i<dataBuckets.length;i++) {
+                               if(dataBuckets[i] == null) continue;
+                               dataBuckets[i].free();
+                               if(persistent)
+                                       dataBuckets[i].removeFrom(container);
+                               dataBuckets[i] = null;
+                       }
+                       for(int i=0;i<checkBuckets.length;i++) {
+                               if(checkBuckets[i] == null) continue;
+                               checkBuckets[i].free();
+                               if(persistent)
+                                       checkBuckets[i].removeFrom(container);
+                               checkBuckets[i] = null;
+                       }
+                       return;
+               }
                logMINOR = Logger.shouldLog(Logger.MINOR, this);
                // Start the inserts
                try {

_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs

Reply via email to