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);


Reply via email to