[freenet-cvs] r17553 - trunk/freenet/src/freenet/node

toad at freenetproject.org toad at freenetproject.org
Tue Feb 5 21:50:40 UTC 2008


Author: toad
Date: 2008-02-05 21:50:40 +0000 (Tue, 05 Feb 2008)
New Revision: 17553

Modified:
   trunk/freenet/src/freenet/node/FailureTable.java
   trunk/freenet/src/freenet/node/Node.java
Log:
Don't accept offer if we have the key in the datastore.

Modified: trunk/freenet/src/freenet/node/FailureTable.java
===================================================================
--- trunk/freenet/src/freenet/node/FailureTable.java	2008-02-05 21:48:58 UTC (rev 17552)
+++ trunk/freenet/src/freenet/node/FailureTable.java	2008-02-05 21:50:40 UTC (rev 17553)
@@ -255,6 +255,10 @@
 	void onOffer(Key key, PeerNode peer, byte[] authenticator) {
 		if(logMINOR)
 			Logger.minor(this, "Offered key "+key+" by peer "+peer);
+		if(node.hasKey(key)) {
+			Logger.minor(this, "Already have key");
+			return;
+		}
 		FailureTableEntry entry;
 		long now = System.currentTimeMillis();
 		synchronized(this) {

Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java	2008-02-05 21:48:58 UTC (rev 17552)
+++ trunk/freenet/src/freenet/node/Node.java	2008-02-05 21:50:40 UTC (rev 17553)
@@ -3063,4 +3063,12 @@
 		if(darknetCrypto == null) return false;
 		return darknetCrypto.definitelyPortForwarded();
 	}
+
+	public boolean hasKey(Key key) {
+		// FIXME optimise!
+		if(key instanceof NodeCHK)
+			return fetch((NodeCHK)key, true) != null;
+		else
+			return fetch((NodeSSK)key, true) != null;
+	}
 }




More information about the cvs mailing list