Author: robert
Date: 2007-12-19 22:01:58 +0000 (Wed, 19 Dec 2007)
New Revision: 16738
Modified:
trunk/freenet/src/freenet/node/CHKInsertSender.java
Log:
fix NPE; that's how async timeouts work!
Modified: trunk/freenet/src/freenet/node/CHKInsertSender.java
===================================================================
--- trunk/freenet/src/freenet/node/CHKInsertSender.java 2007-12-19 21:29:36 UTC
(rev 16737)
+++ trunk/freenet/src/freenet/node/CHKInsertSender.java 2007-12-19 22:01:58 UTC
(rev 16738)
@@ -106,6 +106,11 @@
}
public void onMatched(Message m) {
+ if (m==null) {
+ Logger.error(this, "Timed out waiting for a
final ack from: "+pn);
+ receivedNotice(false);
+ return;
+ }
PeerNode pn = (PeerNode) m.getSource();
// pn cannot be null, because the filters will prevent
garbage collection of the nodes
@@ -128,16 +133,6 @@
private MessageFilter getNotificationMessageFilter() {
return MessageFilter.create().setField(DMT.UID,
uid).setType(DMT.FNPInsertTransfersCompleted).setSource(pn).setTimeout(TRANSFER_COMPLETION_ACK_TIMEOUT);
}
-
- boolean isTimedOut() {
- return
System.currentTimeMillis()>(transferCompletedTime+TRANSFER_COMPLETION_ACK_TIMEOUT);
- }
-
- public void maybeTimedOut() {
- if (isTimedOut()) {
- receivedNotice(false);
- }
- }
}
CHKInsertSender(NodeCHK myKey, long uid, byte[] headers, short htl,
@@ -721,7 +716,6 @@
completedTransfers = false;
break;
}
- transfers[i].maybeTimedOut();
if
(!transfers[i].receivedCompletionNotice) {
//must wait
completedNotifications = false;