diff --git a/doc/gnutella-differences.md b/doc/gnutella-differences.md index 48e7bd8e..6bfb9f52 100644 --- a/doc/gnutella-differences.md +++ b/doc/gnutella-differences.md @@ -18,6 +18,8 @@ In the LimeWire flavor of Gnutella, ultrapeers had 32 slots for leaf connections Search requests originating from a leaf or locally at the ultrapeer get forwarded to all neighboring ultrapeers. Search requests arriving from an ultrapeer connection get forwarded only to those ultrapeer that have a keyword hit in their published Bloom filters. This simplifies the Gnutella model because instead of numeric ttl value a simple boolean can be used. Due to the higher fan-out factor this should result in similar search horizon. +Because the search depth is capped, there will be no dynamic querying, and searches by hash are permitted. + ## Content indexing In Gnutella leafs upload Bloom filters of the keywords describing the files they are sharing to ultrapeers. Then, when a search query arrives at an ultrapeer if the hash of that query matches a bloom filter uploaded by a given leaf, the query is forwarded to that leaf. diff --git a/doc/wire-protocol.md b/doc/wire-protocol.md index fb74b7e9..9db28737 100644 --- a/doc/wire-protocol.md +++ b/doc/wire-protocol.md @@ -75,7 +75,7 @@ Sent when the leaf wants to find the addresses of more ultrapeers to connect to. #### "Search" -Sent by a leaf when performing a search. Contains the reply-to b64 destination for signed I2P datagrams. +Sent by a leaf or ultrapeer when performing a search. Contains the reply-to b64 destination for signed I2P datagrams. ``` { @@ -83,11 +83,14 @@ Sent by a leaf when performing a search. Contains the reply-to b64 destination version: 1, uuid: "asdf-1234..." firstHop: false, - keywords : "great speeches" + keywords : "great speeches", + infohash: "asdfasdf...", replyTo : "asdfasf...b64" } ``` +A search can contain either a list of keyword or the infohash if the user is looking for a specific file. If both are present, the infohash takes precedence and the keywords are ignored. + ### Ultrapeer to leaf The "Search" message is also sent from an ultrapeer to a leaf.