summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2011-04-27 17:21:41 -0400
committerNick Mathewson <nickm@torproject.org>2011-04-27 17:23:05 -0400
commit34510f9278675e6e041503e425ca19a1fa0f3616 (patch)
tree88a60a17edf436cf4f90a10c1d1bcc0bfe35cfa7
parentcba1d29b7ff041dc222d69640f4d4330d31f7ea1 (diff)
downloadtor-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_trackexithost5
-rw-r--r--src/or/connection_edge.c4
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);
}