Author: toad
Date: 2005-12-07 02:57:13 +0000 (Wed, 07 Dec 2005)
New Revision: 7683
Modified:
trunk/freenet/src/freenet/node/InsertSender.java
trunk/freenet/src/freenet/node/Version.java
Log:
282: (mandatory)
Fix infinite loop in completion thread.
Also check for disconnected nodes, these don't equal timeouts.
Modified: trunk/freenet/src/freenet/node/InsertSender.java
===================================================================
--- trunk/freenet/src/freenet/node/InsertSender.java 2005-12-06 16:20:58 UTC
(rev 7682)
+++ trunk/freenet/src/freenet/node/InsertSender.java 2005-12-07 02:57:13 UTC
(rev 7683)
@@ -626,6 +626,7 @@
if(nodesWaitingForCompletion.size() !=
waiters.length) {
// Added another one
Logger.minor(this, "Looping
(mf==null): waiters="+waiters.length+" but
waiting="+nodesWaitingForCompletion.size());
+ continue;
}
if(waitForCompletedTransfers(waiters,
timeout, noTimeLeft)) {
synchronized(InsertSender.this)
{
@@ -634,8 +635,9 @@
}
return;
}
- if(timeout <= 0) {
+ if(noTimeLeft) {
for(int
i=0;i<waiters.length;i++) {
+
if(!waiters[i].pn.isConnected()) continue;
if(!waiters[i].completedTransfer) {
waiters[i].completedTransfer(false);
}
@@ -701,6 +703,7 @@
if(noTimeLeft) {
Logger.minor(this, "Overall
timeout on "+InsertSender.this);
for(int
i=0;i<waiters.length;i++) {
+
if(!waiters[i].pn.isConnected()) continue;
if(!waiters[i].receivedCompletionNotice)
waiters[i].completed(false, false);
if(!waiters[i].completedTransfer)
@@ -724,6 +727,7 @@
boolean completedTransfers = true;
synchronized(nodesWaitingForCompletion) {
for(int i=0;i<waiters.length;i++) {
+ if(!waiters[i].pn.isConnected())
continue;
if(!waiters[i].completedTransfer) {
completedTransfers = false;
break;
@@ -737,6 +741,7 @@
// Timed out
}
for(int
i=0;i<waiters.length;i++) {
+
if(!waiters[i].pn.isConnected()) continue;
if(!waiters[i].completedTransfer) {
completedTransfers = false;
break;
Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2005-12-06 16:20:58 UTC (rev
7682)
+++ trunk/freenet/src/freenet/node/Version.java 2005-12-07 02:57:13 UTC (rev
7683)
@@ -20,10 +20,10 @@
public static final String protocolVersion = "1.0";
/** The build number of the current revision */
- public static final int buildNumber = 281;
+ public static final int buildNumber = 282;
/** Oldest build of Fred we will talk to */
- public static final int lastGoodBuild = 281;
+ public static final int lastGoodBuild = 282;
/** The highest reported build of fred */
public static int highestSeenBuild = buildNumber;