mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 13:13:44 +01:00
Merge remote-tracking branch 'teor/bug23524'
This commit is contained in:
commit
72391fce23
4
changes/bug23524
Normal file
4
changes/bug23524
Normal file
@ -0,0 +1,4 @@
|
||||
o Minor bugfixes (DoS-resistance):
|
||||
- If future code asks if there are any running bridges, without checking
|
||||
if bridges are enabled, log a BUG warning rather than crashing.
|
||||
Fixes 23524 on 0.3.0.1-alpha.
|
@ -455,8 +455,8 @@ bridge_add_from_config(bridge_line_t *bridge_line)
|
||||
b->fetch_status.schedule = DL_SCHED_BRIDGE;
|
||||
b->fetch_status.backoff = DL_SCHED_RANDOM_EXPONENTIAL;
|
||||
b->fetch_status.increment_on = DL_SCHED_INCREMENT_ATTEMPT;
|
||||
/* This will fail if UseBridges is not set -- and it does. */
|
||||
// download_status_reset(&b->fetch_status);
|
||||
/* We can't reset the bridge's download status here, because UseBridges
|
||||
* might be 0 now, and it might be changed to 1 much later. */
|
||||
b->socks_args = bridge_line->socks_args;
|
||||
if (!bridge_list)
|
||||
bridge_list = smartlist_new();
|
||||
@ -625,6 +625,7 @@ fetch_bridge_descriptors(const or_options_t *options, time_t now)
|
||||
|
||||
SMARTLIST_FOREACH_BEGIN(bridge_list, bridge_info_t *, bridge)
|
||||
{
|
||||
/* This resets the download status on first use */
|
||||
if (!download_status_is_ready(&bridge->fetch_status, now,
|
||||
IMPOSSIBLE_TO_DOWNLOAD))
|
||||
continue; /* don't bother, no need to retry yet */
|
||||
@ -835,7 +836,9 @@ learned_bridge_descriptor(routerinfo_t *ri, int from_cache)
|
||||
MOCK_IMPL(int,
|
||||
any_bridge_descriptors_known, (void))
|
||||
{
|
||||
tor_assert(get_options()->UseBridges);
|
||||
if (BUG(!get_options()->UseBridges)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!bridge_list)
|
||||
return 0;
|
||||
|
@ -5379,7 +5379,7 @@ find_dl_schedule(const download_status_t *dls, const or_options_t *options)
|
||||
}
|
||||
case DL_SCHED_BRIDGE:
|
||||
/* A bridge client downloading bridge descriptors */
|
||||
if (any_bridge_descriptors_known()) {
|
||||
if (options->UseBridges && any_bridge_descriptors_known()) {
|
||||
/* A bridge client with one or more running bridges */
|
||||
return options->TestingBridgeDownloadSchedule;
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user