Author: robert
Date: 2007-12-19 16:06:22 +0000 (Wed, 19 Dec 2007)
New Revision: 16716

Modified:
   trunk/freenet/src/freenet/node/CHKInsertSender.java
Log:
procedurize setTransferTimeout


Modified: trunk/freenet/src/freenet/node/CHKInsertSender.java
===================================================================
--- trunk/freenet/src/freenet/node/CHKInsertSender.java 2007-12-19 15:32:05 UTC 
(rev 16715)
+++ trunk/freenet/src/freenet/node/CHKInsertSender.java 2007-12-19 16:06:22 UTC 
(rev 16716)
@@ -72,10 +72,7 @@
                                backgroundTransfers.notifyAll();
                        }
                        if(!success) {
-                               synchronized(CHKInsertSender.this) {
-                                       transferTimedOut = true;
-                                       CHKInsertSender.this.notifyAll();
-                               }
+                               setTransferTimedOut();
                        }
                }

@@ -89,10 +86,7 @@
                                backgroundTransfers.notifyAll();
                        }
                        if(!success) {
-                               synchronized(CHKInsertSender.this) {
-                                       transferTimedOut = true;
-                                       CHKInsertSender.this.notifyAll();
-                               }
+                               setTransferTimedOut();
                        }                       
                }

@@ -509,6 +503,16 @@
        hasForwardedRejectedOverload = true;
                notifyAll();
        }
+       
+       private void setTransferTimedOut() {
+               if (transferTimedOut) return;
+               synchronized(this) {
+                       if(!transferTimedOut) {
+                               transferTimedOut = true;
+                               notifyAll();
+                       }
+               }
+       }

     /**
      * Finish the insert process. Will set status, wait for underlings to 
complete, and report success
@@ -628,12 +632,10 @@

                        // Wait for the outgoing transfers to complete.
                        if(!waitForCompletedTransfers(transfers)) {
-                               synchronized(CHKInsertSender.this) {
-                                       transferTimedOut = true; // probably, 
they disconnected
-                                       return;
-                               }
+                               setTransferTimedOut();
+                               return;
                        }
-                       
+                               
                        long transfersCompletedTime = 
System.currentTimeMillis();

                        // Wait for acknowledgements from each node, or 
timeouts.
@@ -648,11 +650,8 @@
                                long now = System.currentTimeMillis();
                                timeout = (int)Math.min(Integer.MAX_VALUE, 
(transfersCompletedTime + TRANSFER_COMPLETION_ACK_TIMEOUT) - now);
                                if(timeout <= 0) {
-                                       synchronized(CHKInsertSender.this) {
                                                Logger.error(this, "Timed out 
waiting for transfers to complete on "+uid);
-                                               transferTimedOut = true;
-                                               
//CHKInsertSender.this.notifyAll();
-                                       }
+                                               setTransferTimedOut();
                                        return;
                                }

@@ -711,12 +710,7 @@
                                                                boolean 
anyTimedOut = m.getBoolean(DMT.ANY_TIMED_OUT);
                                                                
transfers[i].receivedNotice(!anyTimedOut);
                                                                if(anyTimedOut) 
{
-                                                                       
synchronized(CHKInsertSender.this) {
-                                                                               
if(!transferTimedOut) {
-                                                                               
        transferTimedOut = true;
-                                                                               
        CHKInsertSender.this.notifyAll();
-                                                                               
}
-                                                                       }
+                                                                       
setTransferTimedOut();
                                                                }
                                                                processed = 
true;
                                                                break;


Reply via email to