forked from enlightenment/efl
on the advice of the insightful creator of dns.c, account for when a UDP
answer is truncated and the resolver switches to TCP, causing the pollfd descriptor will change. Any poll on this old descriptor will either timeout or continually poll as ready SVN revision: 71776
This commit is contained in:
parent
657aee840e
commit
a00765361d
|
@ -115,10 +115,16 @@ error:
|
|||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue