Disable default fallback directories when other directories are set

Only add the default fallback directories when the DirAuthorities,
AlternateDirAuthority, and FallbackDir directory config options
are set to their defaults.

The default fallback directory list is currently empty, this fix will
only change tor's behaviour when it has default fallback directories.

Fixes bug 15642; bugfix on 90f6071d8d in 0.2.4.7-alpha. Patch by "teor".
This commit is contained in:
teor 2015-04-09 16:37:33 +10:00
parent 06939551f4
commit 027f73f70e
2 changed files with 17 additions and 4 deletions

View File

@ -0,0 +1,8 @@
o Minor bugfixes (configuration):
- Only add the default fallback directories when the DirAuthorities,
AlternateDirAuthority, and FallbackDir directory config options
are set to their defaults.
The default fallback directory list is empty, this fix will only
change tor's behaviour when it has default fallback directories.
Fixes bug 15642; bugfix on 90f6071d8dc0 in 0.2.4.7-alpha.
Patch by "teor".

View File

@ -985,17 +985,22 @@ consider_adding_dir_servers(const or_options_t *options,
if (!options->DirAuthorities) { if (!options->DirAuthorities) {
/* then we may want some of the defaults */ /* then we may want some of the defaults */
dirinfo_type_t type = NO_DIRINFO; dirinfo_type_t type = NO_DIRINFO;
if (!options->AlternateBridgeAuthority) if (!options->AlternateBridgeAuthority) {
type |= BRIDGE_DIRINFO; type |= BRIDGE_DIRINFO;
if (!options->AlternateDirAuthority) }
if (!options->AlternateDirAuthority) {
type |= V3_DIRINFO | EXTRAINFO_DIRINFO | MICRODESC_DIRINFO; type |= V3_DIRINFO | EXTRAINFO_DIRINFO | MICRODESC_DIRINFO;
/* Only add the default fallback directories when the DirAuthorities,
* AlternateDirAuthority, and FallbackDir directory config options
* are set to their defaults. */
if (!options->FallbackDir)
add_default_fallback_dir_servers();
}
/* if type == NO_DIRINFO, we don't want to add any of the /* if type == NO_DIRINFO, we don't want to add any of the
* default authorities, because we've replaced them all */ * default authorities, because we've replaced them all */
if (type != NO_DIRINFO) if (type != NO_DIRINFO)
add_default_trusted_dir_authorities(type); add_default_trusted_dir_authorities(type);
} }
if (!options->FallbackDir)
add_default_fallback_dir_servers();
for (cl = options->DirAuthorities; cl; cl = cl->next) for (cl = options->DirAuthorities; cl; cl = cl->next)
if (parse_dir_authority_line(cl->value, NO_DIRINFO, 0)<0) if (parse_dir_authority_line(cl->value, NO_DIRINFO, 0)<0)