I'm currently getting up to speed on the details of the protocol. I'm
curious as to the rationale for this:
<< If the pending message store shows that a Request.Data message with
the current UniqeIDhas already been seen, the node must compose a
RequestFailed message in reply inheriting the UniqeID and HopsToLive of
the present request. The composed RequestFailedmessage does not inherit
or pass on any other header fields from the request, and places its own
address into the Source field as usual. >>
Since Freenet does not use a flooding protocol like Gnutella, I would
think there are situations where a message could loop, but still be
useful for finding the document. Consider the following example:
Node A ---- Node B ----- Node C
| \ /
| \ /
| \ /
| Node D
|
|
Node E
Let's say A sends a message to B which sends it to C which sends it to D
which sends it back to B. B will now throw away the message, but the
document may be available on Node E, where it will not be found. I
would think that Node B should not send the message again to Node C, but
should be able to send it to E (assuming HTL > 0). This implies that
Node should should memorize not just the UniqueID, but a
(UniqueID,destination) pair.
Is this correct, or is there some subtlety here that I'm missing?
_______________________________________________
Freenet-dev mailing list
Freenet-dev at lists.sourceforge.net
http://lists.sourceforge.net/mailman/listinfo/freenet-dev