mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-28 06:13:31 +01:00
Merge remote-tracking branch 'public/bug20103_028_v3' into maint-0.2.8
This commit is contained in:
commit
9ebe202da0
7
changes/bug20103
Normal file
7
changes/bug20103
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
o Major bug fixes (crash):
|
||||||
|
|
||||||
|
- Fix a complicated crash bug that could affect Tor clients
|
||||||
|
configured to use bridges when replacing a networkstatus consensus
|
||||||
|
in which one of their bridges was mentioned. OpenBSD users saw
|
||||||
|
more crashes here, but all platforms were potentially affected.
|
||||||
|
Fixes bug 20103; bugfix on 0.2.8.2-alpha.
|
@ -1631,7 +1631,9 @@ networkstatus_set_current_consensus(const char *consensus,
|
|||||||
if (r != 1 && dl_certs)
|
if (r != 1 && dl_certs)
|
||||||
authority_certs_fetch_missing(c, now);
|
authority_certs_fetch_missing(c, now);
|
||||||
|
|
||||||
if (flav == usable_consensus_flavor()) {
|
const int is_usable_flavor = flav == usable_consensus_flavor();
|
||||||
|
|
||||||
|
if (is_usable_flavor) {
|
||||||
notify_control_networkstatus_changed(current_consensus, c);
|
notify_control_networkstatus_changed(current_consensus, c);
|
||||||
}
|
}
|
||||||
if (flav == FLAV_NS) {
|
if (flav == FLAV_NS) {
|
||||||
@ -1674,20 +1676,12 @@ networkstatus_set_current_consensus(const char *consensus,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Reset the failure count only if this consensus is actually valid. */
|
if (is_usable_flavor) {
|
||||||
if (c->valid_after <= now && now <= c->valid_until) {
|
nodelist_set_consensus(c);
|
||||||
download_status_reset(&consensus_dl_status[flav]);
|
|
||||||
} else {
|
|
||||||
if (!from_cache)
|
|
||||||
download_status_failed(&consensus_dl_status[flav], 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (flav == usable_consensus_flavor()) {
|
|
||||||
/* XXXXNM Microdescs: needs a non-ns variant. ???? NM*/
|
/* XXXXNM Microdescs: needs a non-ns variant. ???? NM*/
|
||||||
update_consensus_networkstatus_fetch_time(now);
|
update_consensus_networkstatus_fetch_time(now);
|
||||||
|
|
||||||
nodelist_set_consensus(current_consensus);
|
|
||||||
|
|
||||||
dirvote_recalculate_timing(options, now);
|
dirvote_recalculate_timing(options, now);
|
||||||
routerstatus_list_update_named_server_map();
|
routerstatus_list_update_named_server_map();
|
||||||
|
|
||||||
@ -1711,6 +1705,14 @@ networkstatus_set_current_consensus(const char *consensus,
|
|||||||
current_consensus);
|
current_consensus);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Reset the failure count only if this consensus is actually valid. */
|
||||||
|
if (c->valid_after <= now && now <= c->valid_until) {
|
||||||
|
download_status_reset(&consensus_dl_status[flav]);
|
||||||
|
} else {
|
||||||
|
if (!from_cache)
|
||||||
|
download_status_failed(&consensus_dl_status[flav], 0);
|
||||||
|
}
|
||||||
|
|
||||||
if (directory_caches_dir_info(options)) {
|
if (directory_caches_dir_info(options)) {
|
||||||
dirserv_set_cached_consensus_networkstatus(consensus,
|
dirserv_set_cached_consensus_networkstatus(consensus,
|
||||||
flavor,
|
flavor,
|
||||||
|
Loading…
Reference in New Issue
Block a user