aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--changes/shortpolicy_compare4
-rw-r--r--src/or/policies.c4
2 files changed, 7 insertions, 1 deletions
diff --git a/changes/shortpolicy_compare b/changes/shortpolicy_compare
new file mode 100644
index 000000000..3de094817
--- /dev/null
+++ b/changes/shortpolicy_compare
@@ -0,0 +1,4 @@
+ o Major bugfixes:
+ - Fix a bug where comparing an unknown address to a microdescriptor's
+ shortened exit policy would always seem to give a "rejected" result.
+ Bugfix on 0.2.3.1-alpha. Fixes bug 3599.
diff --git a/src/or/policies.c b/src/or/policies.c
index 5bd13b501..93cae768e 100644
--- a/src/or/policies.c
+++ b/src/or/policies.c
@@ -1415,8 +1415,10 @@ compare_tor_addr_to_short_policy(const tor_addr_t *addr, uint16_t port,
tor_assert(port != 0);
+ if (addr && tor_addr_is_null(addr))
+ addr = NULL; /* Unspec means 'no address at all,' in this context. */
+
if (addr && (tor_addr_is_internal(addr, 0) ||
- tor_addr_is_null(addr) ||
tor_addr_is_loopback(addr)))
return ADDR_POLICY_REJECTED;