+ IO->DNS.Query->DNS_CB(arg, abuf, alen);
+ else {
+ EV_DNS_syslog(LOG_DEBUG, "C-ARES: Failed by: %s error %s\n",
+ __FUNCTION__,
+ ares_strerror(status));
+ StrBufPrintf(IO->ErrMsg,
+ "%s-lookup %s - %s",
+ IO->DNS.Query->QueryTYPE,
+ (IO->DNS.Query->QStr != NULL)? IO->DNS.Query->QStr : "",
+ ares_strerror(status));
+ IO->DNS.Query->DNSStatus = status;
+ }
+
+ ev_idle_init(&IO->unwind_stack,
+ IO_postdns_callback);
+ IO->unwind_stack.data = IO;
+ EV_DNS_LOGT_INIT(unwind_stack);
+ EV_DNS_LOGT_START(unwind_stack);
+ ev_idle_start(event_base, &IO->unwind_stack);
+}
+
+void QueryCbDone(AsyncIO *IO)
+{
+ SetEVState(IO, eCaresDoneIO);
+ EV_DNS_syslog(LOG_DEBUG, "C-ARES: %s\n", __FUNCTION__);
+
+ EV_DNS_LOGT_STOP(DNS.timeout);
+ ev_timer_stop (event_base, &IO->DNS.timeout);
+
+ EV_DNS_LOGT_STOP(unwind_stack);
+ ev_idle_stop(event_base, &IO->unwind_stack);
+}
+
+void DestructCAres(AsyncIO *IO)
+{
+ SetEVState(IO, eCaresX);
+ EVNC_syslog(LOG_DEBUG, "C-ARES: %s\n", __FUNCTION__);
+
+ EVNC_syslog(LOG_DEBUG, "C-ARES: - stopping %s %d %p \n", "DNS.recv_event", IO->DNS.recv_event.fd, &IO->DNS.recv_event);
+ ev_io_stop(event_base, &IO->DNS.recv_event);
+
+ EVNC_syslog(LOG_DEBUG, "C-ARES: - stopping %s %d %p\n", "DNS.send_event", IO->DNS.send_event.fd, &IO->DNS.send_event);
+ ev_io_stop(event_base, &IO->DNS.send_event);
+
+ EVNC_syslog(LOG_DEBUG, "C-ARES: - stopping %s %p\n", "DNS.timeout", &IO->DNS.send_event);
+ ev_timer_stop (event_base, &IO->DNS.timeout);
+
+ EVNC_syslog(LOG_DEBUG, "C-ARES: - stopping %s %p\n", "DNS.unwind_stack", &IO->unwind_stack);
+ ev_idle_stop(event_base, &IO->unwind_stack);
+ ares_destroy_options(&IO->DNS.Options);