[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-bugs] #15816 [Tor]: HS Descriptor Fetch retry behavior is broken.
#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
_______________________________________________
tor-bugs mailing list
tor-bugs@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-bugs