Selaa lähdekoodia

Merge remote branch 'origin/maint-0.2.2'

Nick Mathewson 13 vuotta sitten
vanhempi
commit
468da1c28a
2 muutettua tiedostoa jossa 18 lisäystä ja 5 poistoa
  1. 6 0
      changes/bug2363
  2. 12 5
      src/or/dns.c

+ 6 - 0
changes/bug2363

@@ -0,0 +1,6 @@
+  o Minor bugfixes
+    - Correctly detect failures to create DNS requests when using Libevent
+      versions before v2.  (Before Libevent 2, we used our own evdns
+      implementation.  Its return values for Libevent's evdns_resolve_*()
+      functions are not consistent with those from Libevent.) Found by
+      Lodger; fixes bug 2363; bugfix on 0.2.2.6-alpha.

+ 12 - 5
src/or/dns.c

@@ -54,12 +54,19 @@ struct evdns_request;
   evdns_config_windows_nameservers()
 #define evdns_base_set_option_(base, opt, val) \
   evdns_set_option((opt),(val),DNS_OPTIONS_ALL)
+/* Note: our internal eventdns.c, plus Libevent 1.4, used a 1 return to
+ * signify failure to launch a resolve. Libevent 2.0 uses a -1 return to
+ * signify a failure on a resolve, though if we're on Libevent 2.0, we should
+ * have event2/dns.h and never hit these macros.  Regardless, 0 is success. */
 #define evdns_base_resolve_ipv4(base, addr, options, cb, ptr) \
-  ((evdns_resolve_ipv4(addr, options, cb, ptr)<0) ? NULL : ((void*)1))
-#define evdns_base_resolve_reverse(base, addr, options, cb, ptr) \
-  ((evdns_resolve_reverse(addr, options, cb, ptr)<0) ? NULL : ((void*)1))
-#define evdns_base_resolve_reverse_ipv6(base, addr, options, cb, ptr) \
-  ((evdns_resolve_reverse_ipv6(addr, options, cb, ptr)<0) ? NULL : ((void*)1))
+  ((evdns_resolve_ipv4((addr), (options), (cb), (ptr))!=0)    \
+   ? NULL : ((void*)1))
+#define evdns_base_resolve_reverse(base, addr, options, cb, ptr)        \
+  ((evdns_resolve_reverse((addr), (options), (cb), (ptr))!=0)           \
+   ? NULL : ((void*)1))
+#define evdns_base_resolve_reverse_ipv6(base, addr, options, cb, ptr)   \
+  ((evdns_resolve_reverse_ipv6((addr), (options), (cb), (ptr))!=0)      \
+   ? NULL : ((void*)1))
 
 #elif defined(LIBEVENT_VERSION_NUMBER) && LIBEVENT_VERSION_NUMBER < 0x02000303
 #define evdns_base_set_option_(base, opt, val) \