[freenet-cvs] r16886 - trunk/freenet/src/freenet/node

robert at freenetproject.org robert at freenetproject.org
Fri Jan 4 18:22:11 UTC 2008


Author: robert
Date: 2008-01-04 18:22:10 +0000 (Fri, 04 Jan 2008)
New Revision: 16886

Modified:
   trunk/freenet/src/freenet/node/RequestSender.java
Log:
do not continue a search which has already locally timed out


Modified: trunk/freenet/src/freenet/node/RequestSender.java
===================================================================
--- trunk/freenet/src/freenet/node/RequestSender.java	2008-01-04 17:22:34 UTC (rev 16885)
+++ trunk/freenet/src/freenet/node/RequestSender.java	2008-01-04 18:22:10 UTC (rev 16886)
@@ -136,6 +136,7 @@
         	pubKey = ((NodeSSK)key).getPubKey();
         }
         
+		long startTime=System.currentTimeMillis();
         HashSet nodesRoutedTo = new HashSet();
         HashSet nodesNotIgnored = new HashSet();
         while(true) {
@@ -145,6 +146,12 @@
                 finish(DATA_NOT_FOUND, null);
                 return;
             }
+			
+			if (source!=null && System.currentTimeMillis()-startTime>FETCH_TIMEOUT) {
+				Logger.error(this, "discontinuing non-local request search, general timeout");
+				finish(TIMED_OUT, null);
+				return;
+			}
             
             // Route it
             PeerNode next;
@@ -586,6 +593,7 @@
      */
     public synchronized short waitUntilStatusChange(short mask) {
     	if(mask == WAIT_ALL) throw new IllegalArgumentException("Cannot ignore all!");
+		long startTime=System.currentTimeMillis();
         while(true) {
         	short current = mask; // If any bits are set already, we ignore those states.
         	
@@ -605,6 +613,10 @@
             } catch (InterruptedException e) {
                 // Ignore
             }
+			if (source!=null && System.currentTimeMillis()-startTime > 2*FETCH_TIMEOUT) {
+				Logger.error(this, "spending way too long waiting for request sender to finish");
+				throw new RuntimeException("something is broken");
+			}
         }
     }
     




More information about the cvs mailing list