Author: toad
Date: 2006-05-05 18:38:50 +0000 (Fri, 05 May 2006)
New Revision: 8610
Modified:
trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
trunk/freenet/src/freenet/node/PeerManager.java
trunk/freenet/src/freenet/node/PeerNode.java
trunk/freenet/src/freenet/node/TextModeClientInterface.java
trunk/freenet/src/freenet/node/Version.java
Log:
677: metadata field, remember detectedPeer
Add metadata field under noderef for each peer. This is not part of the
noderef; it is controlled by the local node not the one being referred to.
Use this to remember detectedPeer. (Last known IP address for the node).
This should help a little with the NATs/dynamic IPs problem, it also allows for
future flags etc per-peer.
Modified: trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
2006-05-05 18:18:29 UTC (rev 8609)
+++ trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
2006-05-05 18:38:50 UTC (rev 8610)
@@ -273,7 +273,7 @@
SimpleFieldSet fs;
try {
- fs = new SimpleFieldSet(ref, false);
+ fs = new SimpleFieldSet(ref, true);
} catch (IOException e) {
this.sendErrorPage(ctx, 200, "Failed to add
node", "Unable to parse the given text: <pre>"+ref+"</pre> as a node reference:
"+e+" Please <a href=\".\">Try again</a>.");
return;
Modified: trunk/freenet/src/freenet/node/PeerManager.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerManager.java 2006-05-05 18:18:29 UTC
(rev 8609)
+++ trunk/freenet/src/freenet/node/PeerManager.java 2006-05-05 18:38:50 UTC
(rev 8610)
@@ -66,7 +66,7 @@
while(true) {
// Read a single NodePeer
SimpleFieldSet fs;
- fs = new SimpleFieldSet(br, false);
+ fs = new SimpleFieldSet(br, true);
PeerNode pn;
try {
pn = new PeerNode(fs, node);
Modified: trunk/freenet/src/freenet/node/PeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNode.java 2006-05-05 18:18:29 UTC
(rev 8609)
+++ trunk/freenet/src/freenet/node/PeerNode.java 2006-05-05 18:38:50 UTC
(rev 8610)
@@ -318,6 +318,21 @@
// So go for a filter.
pingAverage =
new TimeDecayingRunningAverage(1, 60000 /* should be
significantly longer than a typical transfer */, 0, Long.MAX_VALUE);
+
+ // Now for the metadata.
+ // The metadata sub-fieldset contains data about the node which is not
part of the node reference.
+ // It belongs to this node, not to the node being described.
+
+ SimpleFieldSet metadata = fs.subset("metadata");
+
+ if(metadata != null) {
+
+ Peer p = new Peer(metadata.get("detected.udp"));
+ if(p != null)
+ detectedPeer = p;
+
+ }
+
}
private void randomizeMaxTimeBetweenPacketSends() {
@@ -1010,14 +1025,27 @@
*/
public void write(Writer w) throws IOException {
SimpleFieldSet fs = exportFieldSet();
+ SimpleFieldSet meta = exportMetadataFieldSet();
+ if(!meta.isEmpty())
+ fs.put("metadata", meta);
fs.writeTo(w);
}
/**
+ * Export metadata about the node as a SimpleFieldSet
+ */
+ private SimpleFieldSet exportMetadataFieldSet() {
+ SimpleFieldSet fs = new SimpleFieldSet(true);
+ if(detectedPeer != null)
+ fs.put("detected.udp", detectedPeer.toString());
+ return fs;
+ }
+
+ /**
* Export our noderef as a SimpleFieldSet
*/
private SimpleFieldSet exportFieldSet() {
- SimpleFieldSet fs = new SimpleFieldSet(false);
+ SimpleFieldSet fs = new SimpleFieldSet(true);
if(lastGoodVersion != null)
fs.put("lastGoodVersion", lastGoodVersion);
for(int i=0;i<nominalPeer.size();i++)
Modified: trunk/freenet/src/freenet/node/TextModeClientInterface.java
===================================================================
--- trunk/freenet/src/freenet/node/TextModeClientInterface.java 2006-05-05
18:18:29 UTC (rev 8609)
+++ trunk/freenet/src/freenet/node/TextModeClientInterface.java 2006-05-05
18:38:50 UTC (rev 8610)
@@ -711,7 +711,7 @@
SimpleFieldSet fs;
System.out.println("Connecting to:\r\n"+content);
try {
- fs = new SimpleFieldSet(content, false);
+ fs = new SimpleFieldSet(content, true);
} catch (IOException e) {
System.err.println("Did not parse: "+e);
e.printStackTrace();
Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-05-05 18:18:29 UTC (rev
8609)
+++ trunk/freenet/src/freenet/node/Version.java 2006-05-05 18:38:50 UTC (rev
8610)
@@ -20,7 +20,7 @@
public static final String protocolVersion = "1.0";
/** The build number of the current revision */
- private static final int buildNumber = 676;
+ private static final int buildNumber = 677;
/** Oldest build of Fred we will talk to */
private static final int lastGoodBuild = 591;