Author: toad
Date: 2007-12-04 18:24:55 +0000 (Tue, 04 Dec 2007)
New Revision: 16272

Modified:
   trunk/freenet/src/freenet/node/AnnounceSender.java
Log:
in fact that's wrong.
send our noderef upstream when received the incoming announcement.
don't send a noderef in response to a reply we get.

Modified: trunk/freenet/src/freenet/node/AnnounceSender.java
===================================================================
--- trunk/freenet/src/freenet/node/AnnounceSender.java  2007-12-04 18:20:37 UTC 
(rev 16271)
+++ trunk/freenet/src/freenet/node/AnnounceSender.java  2007-12-04 18:24:55 UTC 
(rev 16272)
@@ -289,7 +289,6 @@
                        try {
                                OpennetPeerNode pn = node.addNewOpennetNode(fs);
                                cb.addedNode(pn);
-                               sendOurRef(source);
                        } catch (FSParseException e) {
                                Logger.normal(this, "Failed to parse reply: 
"+e, e);
                                if(cb != null) cb.bogusNoderef("parse failed: 
"+e);
@@ -299,11 +298,6 @@
                        } catch (ReferenceSignatureVerificationException e) {
                                Logger.normal(this, "Failed to parse reply: 
"+e, e);
                                if(cb != null) cb.bogusNoderef("parse failed: 
"+e);
-                       } catch (NotConnectedException e) {
-                               Logger.normal(this, "Added their ref but then 
lost connection");
-                               // It will be dropped soon. :(
-                               // FIXME maybe we should remove it here.
-                               return false;
                        }
                }
                return true;
@@ -367,6 +361,26 @@
                        om.rejectRef(uid, source, DMT.NODEREF_REJECTED_INVALID, 
this);
                        return false;
                }
+               // If we want it, add it and send it.
+               try {
+                       if(om.addNewOpennetNode(fs) != null) {
+                               sendOurRef(source);
+                       } else {
+                               // Okay, just route it.
+                       }
+               } catch (FSParseException e) {
+                       om.rejectRef(uid, source, DMT.NODEREF_REJECTED_INVALID, 
this);
+                       return false;
+               } catch (PeerParseException e) {
+                       om.rejectRef(uid, source, DMT.NODEREF_REJECTED_INVALID, 
this);
+                       return false;
+               } catch (ReferenceSignatureVerificationException e) {
+                       om.rejectRef(uid, source, DMT.NODEREF_REJECTED_INVALID, 
this);
+                       return false;
+               } catch (NotConnectedException e) {
+                       Logger.normal(this, "Could not receive noderef, 
disconnected");
+                       return false;
+               }
                return true;
        }



Reply via email to