-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256
Hi,
I've been trying to get to grips with the hidden service code, and I have a question that I was hoping someone on the list could answer.
The constant REND_HID_SERV_DIR_REQUERY_PERIOD is defined as 15 * 60 (15 minutes) in rendclient.c, with the comment "The period for which a hidden service directory cannot be queried for the same descriptor ID again." As far as I can tell, the purpose of this constant is to prevent a client from repeatedly asking an HS directory for a descriptor that the directory doesn't have.
However, when a descriptor fetch fails and there's no reusable cached descriptor, rend_client_desc_trynow(query) calls rend_client_note_connection_attempt_ended(onion_address), which calls purge_hid_serv_from_last_hid_serv_requests(onion_address), which (as far as I can tell) forgets which HS directories have been tried for the descriptor, allowing the same directories to be tried again before REND_HID_SERV_DIR_REQUERY_PERIOD elapses.
So what's the effect of REND_HID_SERV_DIR_REQUERY_PERIOD?
Thanks for any guidance, Michael
On Tue, May 27, 2014 at 9:25 AM, Michael Rogers michael@briarproject.org wrote:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256
Hi,
I've been trying to get to grips with the hidden service code, and I have a question that I was hoping someone on the list could answer.
The constant REND_HID_SERV_DIR_REQUERY_PERIOD is defined as 15 * 60 (15 minutes) in rendclient.c, with the comment "The period for which a hidden service directory cannot be queried for the same descriptor ID again." As far as I can tell, the purpose of this constant is to prevent a client from repeatedly asking an HS directory for a descriptor that the directory doesn't have.
However, when a descriptor fetch fails and there's no reusable cached descriptor, rend_client_desc_trynow(query) calls rend_client_note_connection_attempt_ended(onion_address), which calls purge_hid_serv_from_last_hid_serv_requests(onion_address), which (as far as I can tell) forgets which HS directories have been tried for the descriptor, allowing the same directories to be tried again before REND_HID_SERV_DIR_REQUERY_PERIOD elapses.
So what's the effect of REND_HID_SERV_DIR_REQUERY_PERIOD?
Hello, Michael!
This looks like a possible bug to me. Could you open a ticket at trac.torproject.org?
cheers,
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256
On 29/05/14 19:36, Nick Mathewson wrote:
So what's the effect of REND_HID_SERV_DIR_REQUERY_PERIOD?
Hello, Michael!
This looks like a possible bug to me. Could you open a ticket at trac.torproject.org?
Hi Nick,
Robert Ransom replied off-list explaining the intent of this code. For the sake of the list archives: the constant prevents repeated successful queries to the same HSDir, and repeated unsuccessful queries during a single connection attempt. The rationale for not also using it to limit unsuccessful queries during distinct connection attempts is given in ticket 3335.
Cheers, Michael