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