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. */