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 {