Skip to content
Snippets Groups Projects
Commit 36710c45 authored by Steinar H. Gunderson's avatar Steinar H. Gunderson
Browse files

Always register for TCP events even if there are no outstanding queries, as...

Always register for TCP events even if there are no outstanding queries, as the other side could always close the connection, which is a valid event which should be responded to.
parent 63ac6156
No related branches found
No related tags found
No related merge requests found
......@@ -30,20 +30,23 @@ int ares_fds(ares_channel channel, fd_set *read_fds, fd_set *write_fds)
ares_socket_t nfds;
int i;
/* No queries, no file descriptors. */
if (!channel->queries)
return 0;
nfds = 0;
for (i = 0; i < channel->nservers; i++)
{
server = &channel->servers[i];
if (server->udp_socket != ARES_SOCKET_BAD)
/* We only need to register interest in UDP sockets if we have
* outstanding queries.
*/
if (channel->queries && server->udp_socket != ARES_SOCKET_BAD)
{
FD_SET(server->udp_socket, read_fds);
if (server->udp_socket >= nfds)
nfds = server->udp_socket + 1;
}
/* We always register for TCP events, because we want to know
* when the other side closes the connection, so we don't waste
* time trying to use a broken connection.
*/
if (server->tcp_socket != ARES_SOCKET_BAD)
{
FD_SET(server->tcp_socket, read_fds);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment