- if ((read == 0) && (write == 0)) {
-// ev_io_stop(event_base, &IO->dns_io_event);
- } else if (IO->dns_io_event.fd != sock) {
- if (IO->dns_io_event.fd != 0) {
- ev_io_stop(event_base, &IO->dns_io_event);
+ if (read) {
+ if ((IO->dns_recv_event.fd != sock) &&
+ (IO->dns_recv_event.fd != 0)) {
+ 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);
+ IO->dns_recv_event.data = IO;
+
+ } else if (write) {
+ if ((IO->dns_send_event.fd != sock) &&
+ (IO->dns_send_event.fd != 0)) {
+ ev_io_stop(event_base, &IO->dns_send_event);