Author: toad
Date: 2007-08-11 18:14:30 +0000 (Sat, 11 Aug 2007)
New Revision: 14623

Modified:
   trunk/freenet/src/freenet/node/RequestHandler.java
   trunk/freenet/src/freenet/node/RequestSender.java
Log:
Suppress propagation of bad noderefs

Modified: trunk/freenet/src/freenet/node/RequestHandler.java
===================================================================
--- trunk/freenet/src/freenet/node/RequestHandler.java  2007-08-11 18:03:54 UTC 
(rev 14622)
+++ trunk/freenet/src/freenet/node/RequestHandler.java  2007-08-11 18:14:30 UTC 
(rev 14623)
@@ -379,9 +379,19 @@
                }

                noderef = 
((ShortBuffer)msg.getObject(DMT.OPENNET_NODEREF)).getData();
-               msg = DMT.createFNPOpennetConnectReply(uid, new 
ShortBuffer(noderef));

                try {
+                       SimpleFieldSet fs = 
PeerNode.compressedNoderefToFieldSet(noderef, 0, noderef.length);
+                       if(!fs.getBoolean("opennet", false)) {
+                               msg = DMT.createFNPOpennetCompletedAck(uid);
+                       } else {
+                               msg = DMT.createFNPOpennetConnectReply(uid, new 
ShortBuffer(noderef));
+                       }
+               } catch (FSParseException e1) {
+                       msg = DMT.createFNPOpennetCompletedAck(uid);
+               }
+               
+               try {
                        dataSource.sendAsync(msg, null, 0, this);
                } catch (NotConnectedException e) {
                        // How sad

Modified: trunk/freenet/src/freenet/node/RequestSender.java
===================================================================
--- trunk/freenet/src/freenet/node/RequestSender.java   2007-08-11 18:03:54 UTC 
(rev 14622)
+++ trunk/freenet/src/freenet/node/RequestSender.java   2007-08-11 18:14:30 UTC 
(rev 14623)
@@ -683,6 +683,11 @@
                        Logger.error(this, "Could not parse opennet noderef for 
"+this+" from "+next, e);
                        return;
                }
+               
+               if(!ref.getBoolean("opennet", false)) {
+                       Logger.error(this, "Could not parse opennet noderef for 
"+this+" from "+next);
+                       return;
+               }

                OpennetManager om = node.getOpennet();
        try {


Reply via email to