Author: toad
Date: 2006-01-27 02:34:43 +0000 (Fri, 27 Jan 2006)
New Revision: 7948
Modified:
trunk/freenet/src/freenet/node/Node.java
trunk/freenet/src/freenet/node/RequestStarter.java
trunk/freenet/src/freenet/node/Version.java
Log:
399:
Fix requests getting lost, (bug resulted in e.g. fproxy requests hanging).
Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java 2006-01-27 02:01:32 UTC (rev
7947)
+++ trunk/freenet/src/freenet/node/Node.java 2006-01-27 02:34:43 UTC (rev
7948)
@@ -1410,8 +1410,8 @@
DSAPublicKey key = pubKeyDatastore.fetchPubKey(hash,
false);
if(key != null) {
cacheKey(hash, key);
+ Logger.minor(this, "Got
"+HexUtil.bytesToHex(hash)+" from store");
}
- Logger.minor(this, "Got "+HexUtil.bytesToHex(hash)+"
from store");
return key;
} catch (IOException e) {
// FIXME deal with disk full, access perms etc; tell
user about it.
Modified: trunk/freenet/src/freenet/node/RequestStarter.java
===================================================================
--- trunk/freenet/src/freenet/node/RequestStarter.java 2006-01-27 02:01:32 UTC
(rev 7947)
+++ trunk/freenet/src/freenet/node/RequestStarter.java 2006-01-27 02:34:43 UTC
(rev 7948)
@@ -66,37 +66,47 @@
}
void realRun() {
- SendableRequest req = sched.removeFirst();
- if(req != null) {
- // Create a thread to handle starting the request, and
the resulting feedback
- Thread t = new Thread(new SenderThread(req));
- t.setDaemon(true);
- t.start();
- sentRequestTime = System.currentTimeMillis();
- // Wait
- long delay = throttle.getDelay();
- Logger.minor(this, "Delay="+delay+" from "+throttle);
- long sleepUntil = sentRequestTime + delay;
- long now;
- do {
- now = System.currentTimeMillis();
- if(now < sleepUntil)
+ SendableRequest req = null;
+ while(true) {
+ if(req == null) req = sched.removeFirst();
+ if(req != null) {
+ Logger.minor(this, "Running "+req);
+ // Create a thread to handle starting the
request, and the resulting feedback
+ Thread t = new Thread(new SenderThread(req));
+ t.setDaemon(true);
+ t.start();
+ Logger.minor(this, "Started "+req+" on "+t);
+ sentRequestTime = System.currentTimeMillis();
+ // Wait
+ long delay = throttle.getDelay();
+ Logger.minor(this, "Delay="+delay+" from
"+throttle);
+ long sleepUntil = sentRequestTime + delay;
+ long now;
+ do {
+ now = System.currentTimeMillis();
+ if(now < sleepUntil)
+ try {
+ Thread.sleep(sleepUntil
- now);
+ Logger.minor(this,
"Slept: "+(sleepUntil-now)+"ms");
+ } catch (InterruptedException
e) {
+ // Ignore
+ }
+ } while(now < sleepUntil);
+ return;
+ } else {
+ Logger.minor(this, "Waiting...");
+ synchronized(this) {
+ // Always take the lock on
RequestStarter first.
+ req = sched.removeFirst();
+ if(req != null) {
+ continue;
+ }
try {
- Thread.sleep(sleepUntil - now);
- Logger.minor(this, "Slept:
"+(sleepUntil-now)+"ms");
+ wait(1000);
} catch (InterruptedException e) {
// Ignore
}
- } while(now < sleepUntil);
- } else {
- synchronized(this) {
- // Always take the lock on RequestStarter first.
- req = sched.removeFirst();
- if(req != null) return;
- try {
- wait(1000);
- } catch (InterruptedException e) {
- // Ignore
+ return;
}
}
}
Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-01-27 02:01:32 UTC (rev
7947)
+++ trunk/freenet/src/freenet/node/Version.java 2006-01-27 02:34:43 UTC (rev
7948)
@@ -20,10 +20,10 @@
public static final String protocolVersion = "1.0";
/** The build number of the current revision */
- public static final int buildNumber = 398;
+ public static final int buildNumber = 399;
/** Oldest build of Fred we will talk to */
- public static final int lastGoodBuild = 392;
+ public static final int lastGoodBuild = 399;
/** The highest reported build of fred */
public static int highestSeenBuild = buildNumber;