mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-23 20:03:31 +01:00
Make the DNSPort option work with libevent 2.x
We need to use evdns_add_server_port_with_base() when configuring our DNS listener, because libevent segfaults otherwise. Add a macro in compat_libevent.h to pick the correct implementation depending on the libevent version. Fixes bug 1143, found by SwissTorExit
This commit is contained in:
parent
0bd6cb31ed
commit
408a828b1f
@ -20,6 +20,9 @@ Changes in version 0.2.2.9-alpha - 2010-??-??
|
||||
implemented in the past.
|
||||
- Avoid a bogus overlapped memcpy in tor_addr_copy(). Found by
|
||||
"memcpyfail".
|
||||
- Make the DNSPort option work with libevent 2.x. Don't alter the
|
||||
behaviour for libevent 1.x. Fixes bug 1143. Found by SwissTorExit.
|
||||
|
||||
|
||||
o Code simplifications and refactoring:
|
||||
- Generate our manpage and HTML documentation using Asciidoc. This
|
||||
|
@ -23,6 +23,10 @@ void suppress_libevent_log_msg(const char *msg);
|
||||
#define tor_evtimer_new evtimer_new
|
||||
#define tor_evsignal_new evsignal_new
|
||||
#define tor_event_free event_free
|
||||
#define tor_evdns_add_server_port(sock, tcp, cb, data) \
|
||||
evdns_add_server_port_with_base(tor_libevent_get_base(), \
|
||||
(sock),(tcp),(cb),(data));
|
||||
|
||||
#else
|
||||
struct event *tor_event_new(struct event_base * base, evutil_socket_t sock,
|
||||
short what, void (*cb)(evutil_socket_t, short, void *), void *arg);
|
||||
@ -31,6 +35,7 @@ struct event *tor_evtimer_new(struct event_base * base,
|
||||
struct event *tor_evsignal_new(struct event_base * base, int sig,
|
||||
void (*cb)(evutil_socket_t, short, void *), void *arg);
|
||||
void tor_event_free(struct event *ev);
|
||||
#define tor_evdns_add_server_port evdns_add_server_port
|
||||
#endif
|
||||
|
||||
/* XXXX022 If we can drop support for Libevent before 1.1, we can
|
||||
|
@ -299,8 +299,8 @@ dnsserv_configure_listener(connection_t *conn)
|
||||
tor_assert(conn->s >= 0);
|
||||
tor_assert(conn->type == CONN_TYPE_AP_DNS_LISTENER);
|
||||
|
||||
conn->dns_server_port = evdns_add_server_port(conn->s, 0,
|
||||
evdns_server_callback, NULL);
|
||||
conn->dns_server_port =
|
||||
tor_evdns_add_server_port(conn->s, 0, evdns_server_callback, NULL);
|
||||
}
|
||||
|
||||
/** Free the evdns server port for <b>conn</b>, which must be an
|
||||
|
Loading…
Reference in New Issue
Block a user