Author: zothar
Date: 2008-01-09 02:20:04 +0000 (Wed, 09 Jan 2008)
New Revision: 16977

Modified:
   trunk/freenet/src/freenet/node/Node.java
   trunk/freenet/src/freenet/node/NodeARKInserter.java
   trunk/freenet/src/freenet/node/PeerManager.java
Log:
Locally broadcast a differential node reference to the node's connected darknet 
peers when the node's ARK edition changes.  There's another bug in the 
differential node reference handling changes of parseARK(), but I don't expect 
it to affect anything other than differential node references

Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java    2008-01-09 01:54:55 UTC (rev 
16976)
+++ trunk/freenet/src/freenet/node/Node.java    2008-01-09 02:20:04 UTC (rev 
16977)
@@ -152,7 +152,7 @@
                        // We'll broadcast the new name to our connected 
darknet peers via a differential node reference
                        SimpleFieldSet fs = new SimpleFieldSet(true);
                        fs.putSingle("myName", myName);
-                       peers.locallyBroadcastDiffNodeRef(fs, true);
+                       peers.locallyBroadcastDiffNodeRef(fs, true, false);
                        // We call the callback once again to ensure 
MeaningfulNodeNameUserAlert
                        // has been unregistered ... see #1595
                        get();

Modified: trunk/freenet/src/freenet/node/NodeARKInserter.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeARKInserter.java 2008-01-09 01:54:55 UTC 
(rev 16976)
+++ trunk/freenet/src/freenet/node/NodeARKInserter.java 2008-01-09 02:20:04 UTC 
(rev 16977)
@@ -212,6 +212,10 @@
                        if(logMINOR) Logger.minor(this, "ARK number moving from 
"+crypto.myARKNumber+" to "+l);
                        crypto.myARKNumber = l;
                        node.writeNodeFile();
+                       // We'll broadcast the new ARK edition to our connected 
peers via a differential node reference
+                       SimpleFieldSet fs = new SimpleFieldSet(true);
+                       fs.putSingle("ark.number", 
Long.toString(crypto.myARKNumber));
+                       node.peers.locallyBroadcastDiffNodeRef(fs, 
!crypto.isOpennet, crypto.isOpennet);
                }
        }


Modified: trunk/freenet/src/freenet/node/PeerManager.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerManager.java     2008-01-09 01:54:55 UTC 
(rev 16976)
+++ trunk/freenet/src/freenet/node/PeerManager.java     2008-01-09 02:20:04 UTC 
(rev 16977)
@@ -618,7 +618,7 @@
        /**
         * Asynchronously send a differential node reference to every 
isConnected() peer.
         */
-       public void locallyBroadcastDiffNodeRef(SimpleFieldSet fs, boolean 
toDarknetOnly) {
+       public void locallyBroadcastDiffNodeRef(SimpleFieldSet fs, boolean 
toDarknetOnly, boolean toOpennetOnly) {
                PeerNode[] peers;
                synchronized (this) {
                        // myPeers not connectedPeers as connectedPeers only 
contains
@@ -628,6 +628,7 @@
                for(int i=0;i<peers.length;i++) {
                        if(!peers[i].isConnected()) continue;
                        if(toDarknetOnly && !peers[i].isDarknet()) continue;
+                       if(toOpennetOnly && !peers[i].isOpennet()) continue;
                        peers[i].sendNodeToNodeMessage(fs, 
Node.N2N_MESSAGE_TYPE_DIFFNODEREF, false, 0, false);
                }
        }


Reply via email to