]> code.citadel.org Git - citadel.git/blobdiff - citadel/modules/c-ares-dns/serv_c-ares-dns.c
libc-ares migration
[citadel.git] / citadel / modules / c-ares-dns / serv_c-ares-dns.c
index 737f40452101aefb67b8c83df1b84f29aad48eaa..07e44a11351a4e789a5bf16fe33261d41b45a44e 100644 (file)
@@ -465,6 +465,7 @@ int QueueQuery(ns_type Type, char *name, AsyncIO *IO, IO_CallBack PostDNS)
        int length, family;
        char address_b[sizeof(struct in6_addr)];
        int optmask = 0;
+       int rfd, wfd;
 
        optmask |= ARES_OPT_SOCK_STATE_CB;
        IO->DNSOptions.sock_state_cb = SockStateCb;
@@ -522,15 +523,22 @@ int QueueQuery(ns_type Type, char *name, AsyncIO *IO, IO_CallBack PostDNS)
                return 0;
        }
        ares_query(IO->DNSChannel, name, ns_c_in, Type, QueryCb, IO);
+       ares_fds(IO->DNSChannel, &rfd, &wfd);
        return 1;
 }
 
 static void DNS_recv_callback(struct ev_loop *loop, ev_io *watcher, int revents)
 {
+       AsyncIO *IO = watcher->data;
+       
+       ares_process_fd(IO->DNSChannel, IO->sock, 0);
 }
 
 static void DNS_send_callback(struct ev_loop *loop, ev_io *watcher, int revents)
 {
+       AsyncIO *IO = watcher->data;
+       
+       ares_process_fd(IO->DNSChannel, 0, IO->sock);
 }
 
 void SockStateCb(void *data, int sock, int read, int write)