Author: toad
Date: 2008-01-28 14:44:38 +0000 (Mon, 28 Jan 2008)
New Revision: 17357
Modified:
trunk/freenet/src/freenet/node/CHKInsertSender.java
Log:
Update status to reflect receiveFailed. By the time completed() is true, we
will have an accurate status.
Before that, status may only reflect failure modes that occur in realRun() i.e.
mostly not receiveFailed.
This is needed because we don't want to have to wait for the incoming data
transfer before forwarding the InsertReply.
Modified: trunk/freenet/src/freenet/node/CHKInsertSender.java
===================================================================
--- trunk/freenet/src/freenet/node/CHKInsertSender.java 2008-01-28 14:40:29 UTC
(rev 17356)
+++ trunk/freenet/src/freenet/node/CHKInsertSender.java 2008-01-28 14:44:38 UTC
(rev 17357)
@@ -624,16 +624,21 @@
if(logMINOR) Logger.minor(this, "Set status code:
"+getStatusString()+" on "+uid);
}
+ boolean failedRecv; // receiveFailed is protected by
backgroundTransfers but status by this
// Now wait for transfers, or for downstream transfer notifications.
+ // Note that even the data receive may not have completed by this
point.
synchronized(backgroundTransfers) {
if (!backgroundTransfers.isEmpty()) {
waitForBackgroundTransferCompletions();
} else {
if(logMINOR) Logger.minor(this, "No background
transfers");
}
+ failedRecv = receiveFailed;
}
synchronized(this) {
+ if(failedRecv)
+ status = RECEIVE_FAILED;
allTransfersCompleted = true;
notifyAll();
}