Author: toad
Date: 2007-04-14 18:25:20 +0000 (Sat, 14 Apr 2007)
New Revision: 12706

Modified:
   trunk/freenet/src/freenet/node/CHKInsertSender.java
Log:
Fix infinite loop

Modified: trunk/freenet/src/freenet/node/CHKInsertSender.java
===================================================================
--- trunk/freenet/src/freenet/node/CHKInsertSender.java 2007-04-14 17:59:34 UTC 
(rev 12705)
+++ trunk/freenet/src/freenet/node/CHKInsertSender.java 2007-04-14 18:25:20 UTC 
(rev 12706)
@@ -695,6 +695,24 @@
                        }

                        if(mf == null) {
+                               
+                               if(!waitingForAny) {
+                                       // All are disconnected
+                                       allTransfersCompleted = true;
+                                       return;
+                               }
+                               
+                               if(!anyNotCompleted) {
+                                       // All have completed transferring, AND 
all have received completion notices!
+                                       // All done!
+                                       if(logMINOR) Logger.minor(this, 
"Completed, status="+getStatusString()+", nothing left to wait for for "+uid+" 
.");
+                                       synchronized(CHKInsertSender.this) {
+                                               allTransfersCompleted = true;
+                                               
CHKInsertSender.this.notifyAll();
+                                       }
+                                       return;
+                               }
+                               
                                if(status != NOT_FINISHED) {
                                        if(nodesWaitingForCompletion.size() != 
waiters.length) {
                                                // Added another one
@@ -712,23 +730,6 @@
                                        }
                                } else {

-                                       if(!waitingForAny) {
-                                               // All are disconnected
-                                               allTransfersCompleted = true;
-                                               return;
-                                       }
-                                       
-                                       if(!anyNotCompleted) {
-                                               // All have completed 
transferring, AND all have received completion notices!
-                                               // All done!
-                                               if(logMINOR) Logger.minor(this, 
"Completed, status="+getStatusString()+", nothing left to wait for for "+uid+" 
.");
-                                               
synchronized(CHKInsertSender.this) {
-                                                       allTransfersCompleted = 
true;
-                                                       
CHKInsertSender.this.notifyAll();
-                                               }
-                                               return;
-                                       }
-                                       
                                        // Still waiting for request 
completion, so more may be added
                                        synchronized(nodesWaitingForCompletion) 
{
                                                try {


Reply via email to