Hi!
I have an issue with TCP sockets in c-ares sometimes causing my epoll_wait()
to return immediately with a readable/writable socket.
After some debugging, I think this is due to the is_broken member being set
to non-zero, causing read_tcp_data() and write_tcp_data() to return early.
It seems the ares_process_fd() should have a call to process_broken_connections()
to actually close broken connections, just like ares_process() does.
-- Tommie Index: ares_process.c =================================================================== --- ares_process.c (revision 62164) +++ ares_process.c (arbetskopia) @@ -167,6 +167,7 @@ read_tcp_data(channel, NULL, read_fd, &now); read_udp_packets(channel, NULL, read_fd, &now); process_timeouts(channel, &now); + process_broken_connections(channel, &now); }