discard circuits when we change our bridge configuration

otherwise we might reuse circuits from the previous configuration,
which could be bad depending on the user's situation
This commit is contained in:
Roger Dingledine 2011-05-17 20:51:47 -04:00
parent 07c5026efa
commit 073fed06c4
2 changed files with 12 additions and 2 deletions

6
changes/bug3200 Normal file
View File

@ -0,0 +1,6 @@
o Minor bugfixes:
- When a client starts or stops using bridges, never use a circuit
that was built before the configuration change. This behavior could
put at risk a user who uses bridges to ensure that her traffic
only goes to the chosen addresses. Bugfix on 0.2.0.3-alpha; fixes
bug 3200.

View File

@ -1275,6 +1275,9 @@ options_act(or_options_t *old_options)
int revise_trackexithosts = 0;
int revise_automap_entries = 0;
if ((options->UseEntryGuards && !old_options->UseEntryGuards) ||
options->UseBridges != old_options->UseBridges ||
(options->UseBridges &&
!config_lines_eq(options->Bridges, old_options->Bridges)) ||
!routerset_equal(old_options->ExcludeNodes,options->ExcludeNodes) ||
!routerset_equal(old_options->ExcludeExitNodes,
options->ExcludeExitNodes) ||
@ -1282,8 +1285,9 @@ options_act(or_options_t *old_options)
!routerset_equal(old_options->ExitNodes, options->ExitNodes) ||
options->StrictNodes != old_options->StrictNodes) {
log_info(LD_CIRC,
"Changed to using entry guards, or changed preferred or "
"excluded node lists. Abandoning previous circuits.");
"Changed to using entry guards or bridges, or changed "
"preferred or excluded node lists. "
"Abandoning previous circuits.");
circuit_mark_all_unused_circs();
circuit_expire_all_dirty_circs();
revise_trackexithosts = 1;