mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
Fix check for failed evdns request creation
When using libevent 2, we use evdns_base_resolve_*(). When not, we fake evdns_base_resolve_*() using evdns_resolve_*(). Our old check was looking for negative values (like libevent 2 returns), but our eventdns.c code returns 1. This code makes the check just test for nonzero. Note that this broken check was not for _resolve_ failures or even for failures to _launch_ a resolve: it was for failures to _create_ or _encode_ a resolve request. Bug introduced in 81eee0ecfff3dac1e9438719d2f7dc0ba7e84a71; found by lodger; uploaded to trac by rransom. Bug 2363. Fix on 0.2.2.6-alpha.
This commit is contained in:
@@ -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.
|
||||
+7
-3
@@ -54,12 +54,16 @@ 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))
|
||||
((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))
|
||||
((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_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) \
|
||||
|
||||
Reference in New Issue
Block a user