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