diff options
author | Nick Mathewson <nickm@torproject.org> | 2011-04-27 17:21:41 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2011-04-27 17:23:05 -0400 |
commit | 34510f9278675e6e041503e425ca19a1fa0f3616 (patch) | |
tree | 88a60a17edf436cf4f90a10c1d1bcc0bfe35cfa7 | |
parent | cba1d29b7ff041dc222d69640f4d4330d31f7ea1 (diff) | |
download | tor-34510f9278675e6e041503e425ca19a1fa0f3616.tar.gz tor-34510f9278675e6e041503e425ca19a1fa0f3616.zip |
Fix clear_trackhostexits_mapping() to actually work as advertised
Previously, it would remove every trackhostexits-derived mapping
*from* xyz.<exitname>.exit; it was supposed to remove every
trackhostexits-derived mapping *to* xyz.<exitname>.exit.
Bugfix on 0.2.0.20-rc: fixes an XXX020 added while staring at bug-1090
issues.
-rw-r--r-- | changes/clear_trackexithost | 5 | ||||
-rw-r--r-- | src/or/connection_edge.c | 4 |
2 files changed, 7 insertions, 2 deletions
diff --git a/changes/clear_trackexithost b/changes/clear_trackexithost new file mode 100644 index 0000000000..701d369df3 --- /dev/null +++ b/changes/clear_trackexithost @@ -0,0 +1,5 @@ + o Minor bugfixes: + - Fix a bug in the code where we could keep trying to use a + TrackHostExits-based mapping after we failed to reach the intended + destination node. Bugfix on 0.2.0.20-rc. + diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c index 082cd5f1d7..2c1196c0cd 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -799,8 +799,8 @@ clear_trackexithost_mappings(const char *exitname) tor_strlower(suffix); STRMAP_FOREACH_MODIFY(addressmap, address, addressmap_entry_t *, ent) { - /* XXXX022 HEY! Shouldn't this look at ent->new_address? */ - if (ent->source == ADDRMAPSRC_TRACKEXIT && !strcmpend(address, suffix)) { + if (ent->source == ADDRMAPSRC_TRACKEXIT && + !strcmpend(ent->new_address, suffix)) { addressmap_ent_remove(address, ent); MAP_DEL_CURRENT(address); } |