Author: toad
Date: 2007-11-28 15:50:02 +0000 (Wed, 28 Nov 2007)
New Revision: 16025

Modified:
   trunk/freenet/src/freenet/node/CHKInsertSender.java
Log:
Always set allTransfersCompleted when exiting CompletionWaiter.run() even if by 
an exception.

Modified: trunk/freenet/src/freenet/node/CHKInsertSender.java
===================================================================
--- trunk/freenet/src/freenet/node/CHKInsertSender.java 2007-11-28 15:39:23 UTC 
(rev 16024)
+++ trunk/freenet/src/freenet/node/CHKInsertSender.java 2007-11-28 15:50:02 UTC 
(rev 16025)
@@ -657,6 +657,7 @@
        private class CompletionWaiter implements Runnable {

                public void run() {
+                       try {
                    freenet.support.Logger.OSThread.logPID(this);
                        if(logMINOR) Logger.minor(this, "Starting "+this);

@@ -672,9 +673,7 @@
                        // Wait for the outgoing transfers to complete.
                        if(!waitForCompletedTransfers(waiters)) {
                                synchronized(CHKInsertSender.this) {
-                                       allTransfersCompleted = true;
                                        transferTimedOut = true; // probably, 
they disconnected
-                                       CHKInsertSender.this.notifyAll();
                                        return;
                                }
                        }
@@ -693,8 +692,6 @@
                                        synchronized(CHKInsertSender.this) {
                                                if(logMINOR) Logger.minor(this, 
"Timed out waiting for transfers to complete on "+uid);
                                                transferTimedOut = true;
-                                               allTransfersCompleted = true;
-                                               
CHKInsertSender.this.notifyAll();
                                        }
                                        return;
                                }
@@ -724,11 +721,7 @@
                                }

                                if(mf == null) {
-                                       synchronized(CHKInsertSender.this) {
-                                               allTransfersCompleted = true;
-                                               
CHKInsertSender.this.notifyAll();
-                                               return;
-                                       }
+                                       return;
                                } else {
                                        Message m;
                                        try {
@@ -765,6 +758,12 @@
                                        }
                                }
                        }
+                       } finally {
+                               synchronized(CHKInsertSender.this) {
+                                       allTransfersCompleted = true;
+                                       CHKInsertSender.this.notifyAll();
+                               }
+                       }
                }

                /** Block until all transfers have finished. @return True if 
there is any point in waiting for acknowledgements. */


Reply via email to