Author: zothar
Date: 2008-01-20 16:01:53 +0000 (Sun, 20 Jan 2008)
New Revision: 17170
Modified:
trunk/freenet/src/freenet/node/PeerNode.java
Log:
Add code, not wired in yet, to send a differential node reference containing
node reference fields not required for handshake. Once wired in, this should
later allow removing those fields from the handshake exchanged node references.
Modified: trunk/freenet/src/freenet/node/PeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNode.java 2008-01-19 23:44:16 UTC
(rev 17169)
+++ trunk/freenet/src/freenet/node/PeerNode.java 2008-01-20 16:01:53 UTC
(rev 17170)
@@ -3472,9 +3472,48 @@
}
/**
- * A method to be to queue an N2NM in a extra peer data file, only
implemented by DarknetPeerNode
+ * A method to queue an N2NM in a extra peer data file, only
implemented by DarknetPeerNode
*/
public void queueN2NM(SimpleFieldSet fs) {
// Do nothing in the default impl
}
+
+ /**
+ * A method to be called after completing a handshake to send the
+ * newly connected peer, as a differential node reference, the
+ * parts of our node reference not needed for handshake.
+ * Should only be called by completedHandshake() after we're happy
+ * with the connection
+ */
+ private void sendConnectedDiffNoderef() {
+ SimpleFieldSet fs = new SimpleFieldSet(true);
+ SimpleFieldSet nfs = null;
+ if(isDarknet()) {
+ node.exportDarknetPublicFieldSet();
+ } else if(isOpennet()) {
+ node.exportOpennetPublicFieldSet();
+ } else {
+ // What else is there that a differential node
reference would care about? Add it here if needed
+ return;
+ }
+ if(null != nfs.get("ark.pubURI")) {
+ fs.putOverwrite("ark.pubURI", nfs.get("ark.pubURI"));
+ }
+ if(null != nfs.get("ark.number")) {
+ fs.putOverwrite("ark.number", nfs.get("ark.number"));
+ }
+ if(isDarknet() && null != nfs.get("myName")) {
+ fs.putOverwrite("myName", nfs.get("myName"));
+ }
+ String[] physicalUDPEntries = nfs.getAll("physical.udp");
+ if(physicalUDPEntries != null) {
+ fs.putOverwrite("physical.udp", physicalUDPEntries);
+ }
+ if(!fs.isEmpty()) {
+ if(logMINOR) Logger.minor(this, "fs is '" +
fs.toString() + "'");
+ sendNodeToNodeMessage(fs,
Node.N2N_MESSAGE_TYPE_DIFFNODEREF, false, 0, false);
+ } else {
+ if(logMINOR) Logger.minor(this, "fs is empty");
+ }
+ }
}