mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-28 14:23:30 +01:00
parent
a1d866edc9
commit
b0e7925c02
9
changes/bug3309
Normal file
9
changes/bug3309
Normal file
@ -0,0 +1,9 @@
|
||||
o Minor bugfixes:
|
||||
- Clear the table recording the time of the last request for each
|
||||
hidden service descriptor from each HS directory on SIGNAL
|
||||
NEWNYM. Previously, we would clear our HS descriptor cache on
|
||||
SIGNAL NEWNYM, but if we had previously retrieved a descriptor
|
||||
(or tried to) from every directory responsible for it, we would
|
||||
refuse to fetch it again for up to 15 minutes. Bugfix on
|
||||
0.2.2.25-alpha; fixes bug 3309.
|
||||
|
@ -855,6 +855,7 @@ signewnym_impl(time_t now)
|
||||
addressmap_clear_transient();
|
||||
rend_cache_purge();
|
||||
rend_client_cancel_descriptor_fetches();
|
||||
rend_client_purge_last_hid_serv_requests();
|
||||
time_of_last_signewnym = now;
|
||||
signewnym_is_pending = 0;
|
||||
}
|
||||
|
@ -444,6 +444,25 @@ directory_clean_last_hid_serv_requests(void)
|
||||
}
|
||||
}
|
||||
|
||||
/** Purge the history of request times to hidden service directories,
|
||||
* so that future lookups of an HS descriptor will not fail because we
|
||||
* accessed all of the HSDir relays responsible for the descriptor
|
||||
* recently. */
|
||||
void
|
||||
rend_client_purge_last_hid_serv_requests(void)
|
||||
{
|
||||
/* Don't create the table if it doesn't exist yet (and it may very
|
||||
* well not exist if the user hasn't accessed any HSes)... */
|
||||
strmap_t *old_last_hid_serv_requests = last_hid_serv_requests_;
|
||||
/* ... and let get_last_hid_serv_requests re-create it for us if
|
||||
* necessary. */
|
||||
last_hid_serv_requests_ = NULL;
|
||||
|
||||
if (old_last_hid_serv_requests != NULL) {
|
||||
strmap_free(old_last_hid_serv_requests, _tor_free);
|
||||
}
|
||||
}
|
||||
|
||||
/** Determine the responsible hidden service directories for <b>desc_id</b>
|
||||
* and fetch the descriptor belonging to that ID from one of them. Only
|
||||
* send a request to hidden service directories that we did not try within
|
||||
|
@ -19,6 +19,7 @@ int rend_client_introduction_acked(origin_circuit_t *circ,
|
||||
size_t request_len);
|
||||
void rend_client_refetch_v2_renddesc(const rend_data_t *rend_query);
|
||||
void rend_client_cancel_descriptor_fetches(void);
|
||||
void rend_client_purge_last_hid_serv_requests(void);
|
||||
int rend_client_remove_intro_point(extend_info_t *failed_intro,
|
||||
const rend_data_t *rend_query);
|
||||
int rend_client_rendezvous_acked(origin_circuit_t *circ,
|
||||
|
Loading…
Reference in New Issue
Block a user