-/* already inside of the event queue. */
- IO->sock = sock;
- ev_io_init(&IO->recv_event, DNS_recv_callback, IO->sock, EV_READ);
- IO->recv_event.data = IO;
- ev_io_init(&IO->send_event, DNS_send_callback, IO->sock, EV_WRITE);
- IO->send_event.data = IO;
- if (write)
- ev_io_start(event_base, &IO->send_event);
- else
- ev_io_start(event_base, &IO->recv_event);
-
-
- maxtv.tv_sec = time/1000;
- maxtv.tv_usec = (time % 1000) * 1000;
-
- ret = ares_timeout(IO->DNSChannel, &maxtv, &tvbuf);
-
-
+/* already inside of the event queue. */
+ if (DebugCAres)
+ {
+ struct sockaddr_in sin = {};
+ socklen_t slen;
+ slen = sizeof(sin);
+ if ((IO->DNS.SourcePort == 0) &&
+ (getsockname(sock, &sin, &slen) == 0))
+ {
+ IO->DNS.SourcePort = ntohs(sin.sin_port);
+ }
+ EV_DNS_syslog(LOG_DEBUG, "C-ARES: %s %d|%d Sock %d port %hu\n",
+ __FUNCTION__,
+ read,
+ write,
+ sock,
+ IO->DNS.SourcePort);
+ }
+
+ IO->Now = ev_now(event_base);
+
+ if (read) {
+ if ((IO->DNS.recv_event.fd != sock) &&
+ (IO->DNS.recv_event.fd != 0)) {
+ EV_DNS_LOG_STOP(DNS.recv_event);
+ ev_io_stop(event_base, &IO->DNS.recv_event);
+ }
+ IO->DNS.recv_event.fd = sock;
+ ev_io_init(&IO->DNS.recv_event,
+ DNS_recv_callback,
+ IO->DNS.recv_event.fd,
+ EV_READ);
+ EV_DNS_LOG_INIT(DNS.recv_event);
+ IO->DNS.recv_event.data = IO;
+ EV_DNS_LOG_START(DNS.recv_event);
+ ev_io_start(event_base, &IO->DNS.recv_event);
+ }
+ if (write) {
+ if ((IO->DNS.send_event.fd != sock) &&
+ (IO->DNS.send_event.fd != 0)) {
+ EV_DNS_LOG_STOP(DNS.send_event);
+ ev_io_stop(event_base, &IO->DNS.send_event);
+ }
+ IO->DNS.send_event.fd = sock;
+ ev_io_init(&IO->DNS.send_event,
+ DNS_send_callback,
+ IO->DNS.send_event.fd,
+ EV_WRITE);
+ IO->DNS.send_event.data = IO;
+ EV_DNS_LOG_INIT(DNS.send_event);
+ EV_DNS_LOG_START(DNS.send_event);
+ ev_io_start(event_base, &IO->DNS.send_event);
+ }
+ if ((read == 0) && (write == 0)) {
+ EV_DNS_LOG_STOP(DNS.recv_event);
+ EV_DNS_LOG_STOP(DNS.send_event);
+ ev_io_stop(event_base, &IO->DNS.recv_event);
+ ev_io_stop(event_base, &IO->DNS.send_event);
+ }
+}
+void EnableDebugCAres(const int n)
+{
+ DebugCAres = n;