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();
                }


Reply via email to