}
static Eina_Bool
-_dns_fd_cb(Ecore_Con_DNS *dns, Ecore_Fd_Handler *fdh)
+_dns_fd_cb(Ecore_Con_DNS *dns, Ecore_Fd_Handler *fdh __UNUSED__)
{
- if (_ecore_con_dns_check(dns) == 1)
- ecore_main_fd_handler_active_set(fdh, dns_ai_events(dns->ai));
+ if (_ecore_con_dns_check(dns) != 1) return ECORE_CALLBACK_RENEW;
+ if (ecore_main_fd_handler_fd_get(dns->fdh) != dns_ai_pollfd(dns->ai))
+ {
+ ecore_main_fd_handler_del(dns->fdh);
+ dns->fdh = ecore_main_fd_handler_add(dns_ai_pollfd(dns->ai), dns_ai_events(dns->ai), (Ecore_Fd_Cb)_dns_fd_cb, dns, NULL, NULL);
+ }
+ else
+ ecore_main_fd_handler_active_set(dns->fdh, dns_ai_events(dns->ai));
return ECORE_CALLBACK_RENEW;
}