Author: toad
Date: 2008-03-19 16:55:06 +0000 (Wed, 19 Mar 2008)
New Revision: 18616
Modified:
trunk/freenet/src/freenet/node/SSKInsertHandler.java
Log:
Wait for the SSKInsertRequestHeaders and SSKInsertRequestData if we are not fed
them.
Modified: trunk/freenet/src/freenet/node/SSKInsertHandler.java
===================================================================
--- trunk/freenet/src/freenet/node/SSKInsertHandler.java 2008-03-19
16:48:23 UTC (rev 18615)
+++ trunk/freenet/src/freenet/node/SSKInsertHandler.java 2008-03-19
16:55:06 UTC (rev 18616)
@@ -30,6 +30,8 @@
static final int PUBKEY_TIMEOUT = 10000;
+ static final int DATA_INSERT_TIMEOUT = 30000;
+
final Node node;
final long uid;
final PeerNode source;
@@ -87,7 +89,38 @@
if(logMINOR) Logger.minor(this, "Lost connection to
source");
return;
}
-
+
+ if(headers == null) {
+ try {
+ MessageFilter mf =
MessageFilter.create().setType(DMT.FNPSSKInsertRequestHeaders).setField(DMT.UID,
uid).setSource(source).setTimeout(DATA_INSERT_TIMEOUT);
+ Message msg = node.usm.waitFor(mf, this);
+ if(msg == null) {
+ Logger.normal(this, "Failed to receive
FNPSSKInsertRequestHeaders for "+uid);
+ return;
+ }
+ headers =
((ShortBuffer)msg.getObject(DMT.BLOCK_HEADERS)).getData();
+ } catch (DisconnectedException e) {
+ if(logMINOR) Logger.minor(this, "Lost
connection to source on "+uid);
+ return;
+ }
+ }
+
+ if(data == null) {
+ try {
+ MessageFilter mf =
MessageFilter.create().setType(DMT.FNPSSKInsertRequestData).setField(DMT.UID,
uid).setSource(source).setTimeout(DATA_INSERT_TIMEOUT);
+ Message msg = node.usm.waitFor(mf, this);
+ if(msg == null) {
+ Logger.normal(this, "Failed to receive
FNPSSKInsertRequestData for "+uid);
+ return;
+ }
+ data =
((ShortBuffer)msg.getObject(DMT.DATA)).getData();
+ } catch (DisconnectedException e) {
+ if(logMINOR) Logger.minor(this, "Lost
connection to source on "+uid);
+ return;
+ }
+
+ }
+
if(pubKey == null) {
// Wait for pub key
if(logMINOR) Logger.minor(this, "Waiting for pubkey on
"+uid);