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

robert at freenetproject.org robert at freenetproject.org
Tue Mar 4 23:56:42 UTC 2008


Author: robert
Date: 2008-03-04 23:56:42 +0000 (Tue, 04 Mar 2008)
New Revision: 18364

Modified:
   trunk/freenet/src/freenet/node/FailureTable.java
Log:
DoS: check validity of request *before* hitting the datastore


Modified: trunk/freenet/src/freenet/node/FailureTable.java
===================================================================
--- trunk/freenet/src/freenet/node/FailureTable.java	2008-03-04 23:28:15 UTC (rev 18363)
+++ trunk/freenet/src/freenet/node/FailureTable.java	2008-03-04 23:56:42 UTC (rev 18364)
@@ -244,10 +244,6 @@
 		if(!node.enableULPRDataPropagation) return;
 		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) {
@@ -257,6 +253,11 @@
 				return; // we haven't asked for it
 			}
 		}
+		//NB: node.hasKey() executes a datastore fetch
+		if(node.hasKey(key)) {
+			Logger.minor(this, "Already have key");
+			return;
+		}		
 		/*
 		 * Accept (subject to later checks) if we asked for it.
 		 * Should we accept it if we were asked for it? This is "bidirectional propagation".




More information about the cvs mailing list