commit 34510f9278675e6e041503e425ca19a1fa0f3616 Author: Nick Mathewson nickm@torproject.org Date: Wed Apr 27 17:21:41 2011 -0400
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. --- changes/clear_trackexithost | 5 +++++ 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 0000000..701d369 --- /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 082cd5f..2c1196c 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); }