[tor-bugs] #15816 [Tor]: HS Descriptor Fetch retry behavior is broken.

Tor Bug Tracker & Wiki blackhole at torproject.org
Sat Apr 25 11:26:06 UTC 2015


#15816: HS Descriptor Fetch retry behavior is broken.
---------------------+------------------------------------
 Reporter:  yawning  |          Owner:
     Type:  defect   |         Status:  new
 Priority:  major    |      Milestone:  Tor: 0.2.7.x-final
Component:  Tor      |        Version:  Tor: 0.2.7
 Keywords:  tor-hs   |  Actual Points:
Parent ID:           |         Points:
---------------------+------------------------------------
 #14847 broke the HS descriptor retry logic.

 rendclient.c:lookup_last_hid_serv_request()
 {{{
   base32_encode(hsdir_id_base32, sizeof(hsdir_id_base32),
                 hs_dir->identity_digest, DIGEST_LEN);
   tor_snprintf(hsdir_desc_comb_id, sizeof(hsdir_desc_comb_id), "%s%s",
                hsdir_id_base32,
                desc_id_base32);
 }}}

 This used to be onion address based, but was changed to be the descriptor
 ID, which is ok.

 rendclient.c:purge_hid_serv_from_last_hid_serv_requests()
 {{{
     if (tor_memeq(key + LAST_HID_SERV_REQUEST_KEY_LEN -
                   REND_SERVICE_ID_LEN_BASE32,
                   onion_address,
                   REND_SERVICE_ID_LEN_BASE32)) {
       iter = strmap_iter_next_rmv(last_hid_serv_requests, iter);
       tor_free(val);
     } else {
 }}}

 This needs a corresponding change.  The routine is called from
 `rend_client_desc_trynow()` if the fetch 404s to ensure that applications
 aren't stuck waiting for 15 mins if a fetch happens to fail.

 Fixing this will also fix "HSFETCH" not always actually sending all the
 events back (particularly if the descriptor is missing, and a subsequent
 HSFETCH is issued).

--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/15816>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tor-bugs mailing list