Author: j16sdiz
Date: 2009-04-21 09:17:51 +0000 (Tue, 21 Apr 2009)
New Revision: 27143
Modified:
trunk/freenet/src/freenet/io/comm/DMT.java
trunk/freenet/src/freenet/io/comm/MessageFilter.java
trunk/freenet/src/freenet/node/RequestSender.java
trunk/freenet/src/freenet/node/SSKInsertSender.java
Log:
Remove DMT.FNPSSKDataFound
Was deprecated with FNPSSKDataFoundHeaders/FNPSSKDataFoundData since r18601.
Modified: trunk/freenet/src/freenet/io/comm/DMT.java
===================================================================
--- trunk/freenet/src/freenet/io/comm/DMT.java 2009-04-21 09:17:25 UTC (rev
27142)
+++ trunk/freenet/src/freenet/io/comm/DMT.java 2009-04-21 09:17:51 UTC (rev
27143)
@@ -675,20 +675,6 @@
return msg;
}
- public static final MessageType FNPSSKDataFound = new
MessageType("FNPSSKDataFound", PRIORITY_LOW) {{
- addField(UID, Long.class);
- addField(BLOCK_HEADERS, ShortBuffer.class);
- addField(DATA, ShortBuffer.class);
- }};
-
- public static Message createFNPSSKDataFound(long uid, byte[] headers,
byte[] data) {
- Message msg = new Message(FNPSSKDataFound);
- msg.set(UID, uid);
- msg.set(BLOCK_HEADERS, new ShortBuffer(headers));
- msg.set(DATA, new ShortBuffer(data));
- return msg;
- }
-
public static final MessageType FNPSSKDataFoundHeaders = new
MessageType("FNPSSKDataFoundHeaders", PRIORITY_LOW) {{
addField(UID, Long.class);
addField(BLOCK_HEADERS, ShortBuffer.class);
Modified: trunk/freenet/src/freenet/io/comm/MessageFilter.java
===================================================================
--- trunk/freenet/src/freenet/io/comm/MessageFilter.java 2009-04-21
09:17:25 UTC (rev 27142)
+++ trunk/freenet/src/freenet/io/comm/MessageFilter.java 2009-04-21
09:17:51 UTC (rev 27143)
@@ -51,14 +51,25 @@
private long _oldBootID;
private AsyncMessageFilterCallback _callback;
private boolean _setTimeout = false;
+ private final boolean nothing;
private MessageFilter() {
_timeoutFromWait = true;
+ nothing = true;
}
-
+
+ private MessageFilter(boolean noop) {
+ _timeoutFromWait = true;
+ this.nothing = noop;
+ }
+
public static MessageFilter create() {
return new MessageFilter();
}
+
+ public static MessageFilter nothing() {
+ return new MessageFilter(true);
+ }
void onStartWaiting(boolean waitFor) {
synchronized(this) {
@@ -179,6 +190,8 @@
if ((_or != null) && (_or.match(m))) {
return true;
}
+ if (nothing)
+ return false;
if ((_type != null) && (!_type.equals(m.getSpec()))) {
return false;
}
Modified: trunk/freenet/src/freenet/node/RequestSender.java
===================================================================
--- trunk/freenet/src/freenet/node/RequestSender.java 2009-04-21 09:17:25 UTC
(rev 27142)
+++ trunk/freenet/src/freenet/node/RequestSender.java 2009-04-21 09:17:51 UTC
(rev 27143)
@@ -319,11 +319,10 @@
}
} else {
// Data, possibly followed by pubkey
- MessageFilter mfDF =
MessageFilter.create().setSource(pn).setField(DMT.UID,
uid).setTimeout(GET_OFFER_TIMEOUT).setType(DMT.FNPSSKDataFound);
MessageFilter mfAltDF =
MessageFilter.create().setSource(pn).setField(DMT.UID,
uid).setTimeout(GET_OFFER_TIMEOUT).setType(DMT.FNPSSKDataFoundHeaders);
Message reply;
try {
- reply =
node.usm.waitFor(mfDF.or(mfRO.or(mfGetInvalid.or(mfAltDF))), this);
+ reply =
node.usm.waitFor(mfRO.or(mfGetInvalid.or(mfAltDF)), this);
} catch (DisconnectedException e) {
if(logMINOR)
Logger.minor(this,
"Disconnected: "+pn+" getting offer for "+key);
@@ -345,50 +344,6 @@
Logger.minor(this, "Node "+pn+"
rejected FNPGetOfferedKey as invalid with reason "+reply.getShort(DMT.REASON));
offers.deleteLastOffer();
continue;
- } else if(reply.getSpec() == DMT.FNPSSKDataFound) {
- // Receive the data
- headers = ((ShortBuffer)
reply.getObject(DMT.BLOCK_HEADERS)).getData();
- sskData = ((ShortBuffer)
reply.getObject(DMT.DATA)).getData();
- if(pubKey == null) {
- MessageFilter mfPK =
MessageFilter.create().setSource(pn).setField(DMT.UID,
uid).setTimeout(GET_OFFER_TIMEOUT).setType(DMT.FNPSSKPubKey);
- Message pk;
- try {
- pk =
node.usm.waitFor(mfPK, this);
- } catch (DisconnectedException
e) {
- if(logMINOR)
-
Logger.minor(this, "Disconnected: "+pn+" getting pubkey for offer for "+key);
-
offers.deleteLastOffer();
- continue;
- }
- if(pk == null) {
- Logger.error(this, "Got data
but not pubkey from "+pn+" for offer for "+key);
- offers.deleteLastOffer();
- continue;
- }
- try {
- pubKey =
DSAPublicKey.create(((ShortBuffer)pk.getObject(DMT.PUBKEY_AS_BYTES)).getData());
- } catch (CryptFormatException
e) {
- Logger.error(this,
"Bogus pubkey from "+pn+" for offer for "+key+" : "+e, e);
- offers.deleteLastOffer();
- continue;
- }
- }
-
- try {
-
((NodeSSK)key).setPubKey(pubKey);
- } catch (SSKVerifyException e) {
- Logger.error(this, "Bogus SSK
data from "+pn+" for offer for "+key+" : "+e, e);
- offers.deleteLastOffer();
- continue;
- }
-
- if(finishSSKFromGetOffer(pn)) {
- if(logMINOR) Logger.minor(this,
"Successfully fetched SSK from offer from "+pn+" for "+key);
- return;
- } else {
- offers.deleteLastOffer();
- continue;
- }
} else if(reply.getSpec() ==
DMT.FNPSSKDataFoundHeaders) {
headers = ((ShortBuffer)
reply.getObject(DMT.BLOCK_HEADERS)).getData();
// Wait for the data
@@ -631,10 +586,9 @@
MessageFilter mfRejectedOverload =
MessageFilter.create().setSource(next).setField(DMT.UID,
uid).setTimeout(FETCH_TIMEOUT).setType(DMT.FNPRejectedOverload);
MessageFilter mfPubKey =
MessageFilter.create().setSource(next).setField(DMT.UID,
uid).setTimeout(FETCH_TIMEOUT).setType(DMT.FNPSSKPubKey);
MessageFilter mfRealDFCHK =
MessageFilter.create().setSource(next).setField(DMT.UID,
uid).setTimeout(FETCH_TIMEOUT).setType(DMT.FNPCHKDataFound);
- MessageFilter mfRealDFSSK =
MessageFilter.create().setSource(next).setField(DMT.UID,
uid).setTimeout(FETCH_TIMEOUT).setType(DMT.FNPSSKDataFound);
MessageFilter mfAltDFSSKHeaders =
MessageFilter.create().setSource(next).setField(DMT.UID,
uid).setTimeout(FETCH_TIMEOUT).setType(DMT.FNPSSKDataFoundHeaders);
MessageFilter mfAltDFSSKData =
MessageFilter.create().setSource(next).setField(DMT.UID,
uid).setTimeout(FETCH_TIMEOUT).setType(DMT.FNPSSKDataFoundData);
- MessageFilter mf =
mfDNF.or(mfRF.or(mfRouteNotFound.or(mfRejectedOverload.or(mfDF.or(mfPubKey.or(mfRealDFCHK.or(mfRealDFSSK.or(mfAltDFSSKHeaders.or(mfAltDFSSKData)))))))));
+ MessageFilter mf =
mfDNF.or(mfRF.or(mfRouteNotFound.or(mfRejectedOverload.or(mfDF.or(mfPubKey.or(mfRealDFCHK.or(mfAltDFSSKHeaders.or(mfAltDFSSKData))))))));
try {
@@ -922,28 +876,7 @@
}
continue;
}
-
- if(msg.getSpec() == DMT.FNPSSKDataFound) {
-
- if(logMINOR) Logger.minor(this, "Got data and headers
on "+uid);
-
- if(!(key instanceof NodeSSK)) {
- Logger.error(this, "Got "+msg+" but expected a
different key type from "+next);
- node.failureTable.onFailed(key, next, htl,
(int) (System.currentTimeMillis() - timeSentRequest));
- break;
- }
-
- headers =
((ShortBuffer)msg.getObject(DMT.BLOCK_HEADERS)).getData();
-
- sskData =
((ShortBuffer)msg.getObject(DMT.DATA)).getData();
-
- if(pubKey != null) {
- finishSSK(next);
- return;
- }
- continue;
- }
-
+
if(msg.getSpec() == DMT.FNPSSKDataFoundData) {
if(logMINOR) Logger.minor(this, "Got data on "+uid);
@@ -1049,7 +982,7 @@
if(key instanceof NodeCHK)
return MessageFilter.create().setSource(next).setField(DMT.UID,
uid).setTimeout(FETCH_TIMEOUT).setType(DMT.FNPCHKDataFound);
else if(key instanceof NodeSSK) {
- return MessageFilter.create().setSource(next).setField(DMT.UID,
uid).setTimeout(FETCH_TIMEOUT).setType(DMT.FNPSSKDataFound);
+ return MessageFilter.nothing();
}
else throw new IllegalStateException("Unknown keytype: "+key);
}
Modified: trunk/freenet/src/freenet/node/SSKInsertSender.java
===================================================================
--- trunk/freenet/src/freenet/node/SSKInsertSender.java 2009-04-21 09:17:25 UTC
(rev 27142)
+++ trunk/freenet/src/freenet/node/SSKInsertSender.java 2009-04-21 09:17:51 UTC
(rev 27143)
@@ -310,9 +310,8 @@
mfRejectedOverload.clearOr();
MessageFilter mfRouteNotFound =
MessageFilter.create().setSource(next).setField(DMT.UID,
uid).setTimeout(SEARCH_TIMEOUT).setType(DMT.FNPRouteNotFound);
MessageFilter mfDataInsertRejected =
MessageFilter.create().setSource(next).setField(DMT.UID,
uid).setTimeout(SEARCH_TIMEOUT).setType(DMT.FNPDataInsertRejected);
- MessageFilter mfDataFound =
MessageFilter.create().setSource(next).setField(DMT.UID,
uid).setTimeout(SEARCH_TIMEOUT).setType(DMT.FNPSSKDataFound);
- mf =
mfRouteNotFound.or(mfInsertReply.or(mfRejectedOverload.or(mfDataFound.or(mfDataInsertRejected))));
+ mf =
mfRouteNotFound.or(mfInsertReply.or(mfRejectedOverload.or(mfDataInsertRejected)));
while (true) {
try {
@@ -374,60 +373,6 @@
break; // What else can we do?
}
- if (msg.getSpec() == DMT.FNPSSKDataFound) {
- /**
- * Data was already on node, and was
NOT equal to what we sent. COLLISION!
- *
- * We can either accept the old data or
the new data.
- * OLD DATA:
- * - KSK-based stuff is usable. Well,
somewhat; a node could spoof KSKs on
- * receiving an insert, (if it knows
them in advance), but it cannot just
- * start inserts to overwrite old SSKs.
- * - You cannot "update" an SSK.
- * NEW DATA:
- * - KSK-based stuff not usable. (Some
people think this is a good idea!).
- * - Illusion of updatability. (VERY
BAD IMHO, because it's not really
- * updatable... FIXME implement TUKs;
would determine latest version based
- * on version number, and propagate on
request with a certain probability or
- * according to time. However there are
good arguments to do updating at a
- * higher level (e.g. key bottleneck
argument), and TUKs should probably be
- * distinct from SSKs.
- *
- * For now, accept the "old" i.e.
preexisting data.
- */
- Logger.normal(this, "Got collision on
"+myKey+" ("+uid+") sending to "+next.getPeer());
-
- // FNPSSKDataFound == FNPInsertRequest
-
- // Lets assume the pubkeys are the same
(otherwise SHA-256 has been broken
- // and we're completely screwed anyway).
-
- byte[] newData = ((ShortBuffer)
msg.getObject(DMT.DATA)).getData();
- byte[] newHeaders = ((ShortBuffer)
msg.getObject(DMT.BLOCK_HEADERS)).getData();
- if(Arrays.equals(newData, data) &&
Arrays.equals(newHeaders, headers)) {
- Logger.error(this, "Node sent
us collision but data and headers are identical!! from "+next+" on "+uid);
- // Try next node, this one is
evil!
- break;
- }
-
- try {
- block = new SSKBlock(newData,
newHeaders, myKey, false);
- } catch (SSKVerifyException e) {
- Logger.error(this, "Node sent
us collision but got corrupt SSK!! from "+next+" on "+uid);
- // Try next node, no way to
tell this one about its mistake as it's stopped listening. FIXME should it?
- break;
- }
-
- data = newData;
- headers = newHeaders;
- synchronized(this) {
- hasRecentlyCollided = true;
- hasCollided = true;
- notifyAll();
- }
- continue;
- }
-
if(msg.getSpec() == DMT.FNPSSKDataFoundHeaders)
{
/**
* Data was already on node, and was
NOT equal to what we sent. COLLISION!
_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs