Author: toad
Date: 2008-03-04 17:04:02 +0000 (Tue, 04 Mar 2008)
New Revision: 18349
Modified:
trunk/freenet/src/freenet/node/Node.java
trunk/freenet/src/freenet/node/NodeClientCore.java
trunk/freenet/src/freenet/node/RequestHandler.java
Log:
Revert early addListener(), it causes NPEs when we get called too early.
Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java 2008-03-04 16:53:22 UTC (rev
18348)
+++ trunk/freenet/src/freenet/node/Node.java 2008-03-04 17:04:02 UTC (rev
18349)
@@ -1893,7 +1893,7 @@
* a RequestSender, unless the HTL is 0, in which case NULL.
* RequestSender.
*/
- public Object makeRequestSender(Key key, short htl, long uid, PeerNode
source, boolean localOnly, boolean cache, boolean ignoreStore, boolean
offersOnly, RequestSender.Listener listener) {
+ public Object makeRequestSender(Key key, short htl, long uid, PeerNode
source, boolean localOnly, boolean cache, boolean ignoreStore, boolean
offersOnly) {
logMINOR = Logger.shouldLog(Logger.MINOR, this);
if(logMINOR) Logger.minor(this, "makeRequestSender("+key+ ','
+htl+ ',' +uid+ ',' +source+") on "+getDarknetPortNumber());
// In store?
@@ -1933,7 +1933,6 @@
}
if(sender != null) {
if(logMINOR) Logger.minor(this, "Data already being
transferred: "+sender);
- if(listener != null) sender.addListener(listener);
return sender;
}
@@ -1956,7 +1955,6 @@
sender = new RequestSender(key, null, htl, uid, this,
source, offersOnly);
// RequestSender adds itself to requestSenders
}
- if(listener != null) sender.addListener(listener);
sender.start();
if(logMINOR) Logger.minor(this, "Created new sender: "+sender);
return sender;
Modified: trunk/freenet/src/freenet/node/NodeClientCore.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeClientCore.java 2008-03-04 16:53:22 UTC
(rev 18348)
+++ trunk/freenet/src/freenet/node/NodeClientCore.java 2008-03-04 17:04:02 UTC
(rev 18349)
@@ -470,7 +470,7 @@
*/
void asyncGet(Key key, boolean cache, boolean offersOnly, long uid,
RequestSender.Listener listener) {
try {
- Object o = node.makeRequestSender(key, node.maxHTL(),
uid, null, false, cache, false, offersOnly, listener);
+ Object o = node.makeRequestSender(key, node.maxHTL(),
uid, null, false, cache, false, offersOnly);
if(o instanceof CHKBlock) {
node.unlockUID(uid, false, false, true, false);
return; // Already have it.
@@ -509,7 +509,7 @@
throw new
LowLevelGetException(LowLevelGetException.INTERNAL_ERROR);
}
try {
- Object o = node.makeRequestSender(key.getNodeCHK(),
node.maxHTL(), uid, null, localOnly, cache, ignoreStore, false, null);
+ Object o = node.makeRequestSender(key.getNodeCHK(),
node.maxHTL(), uid, null, localOnly, cache, ignoreStore, false);
if(o instanceof CHKBlock) {
try {
return new ClientCHKBlock((CHKBlock)o, key);
@@ -624,7 +624,7 @@
throw new
LowLevelGetException(LowLevelGetException.INTERNAL_ERROR);
}
try {
- Object o = node.makeRequestSender(key.getNodeKey(),
node.maxHTL(), uid, null, localOnly, cache, ignoreStore, false, null);
+ Object o = node.makeRequestSender(key.getNodeKey(),
node.maxHTL(), uid, null, localOnly, cache, ignoreStore, false);
if(o instanceof SSKBlock) {
try {
SSKBlock block = (SSKBlock)o;
Modified: trunk/freenet/src/freenet/node/RequestHandler.java
===================================================================
--- trunk/freenet/src/freenet/node/RequestHandler.java 2008-03-04 16:53:22 UTC
(rev 18348)
+++ trunk/freenet/src/freenet/node/RequestHandler.java 2008-03-04 17:04:02 UTC
(rev 18349)
@@ -132,12 +132,13 @@
Message accepted = DMT.createFNPAccepted(uid);
source.sendAsync(accepted, null, 0, this);
- Object o = node.makeRequestSender(key, htl, uid, source, false, true,
false, false, this);
+ Object o = node.makeRequestSender(key, htl, uid, source, false, true,
false, false);
if(o instanceof KeyBlock) {
returnLocalData((KeyBlock)o);
return;
}
rs = (RequestSender) o;
+ rs.addListener(this);
if(rs == null) { // ran out of htl?
Message dnf = DMT.createFNPDataNotFound(uid);