diff options
-rw-r--r-- | lib/hostip.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/hostip.c b/lib/hostip.c index 503231c0f..6f25de94e 100644 --- a/lib/hostip.c +++ b/lib/hostip.c @@ -617,7 +617,7 @@ CURLcode Curl_wait_for_resolv(struct connectdata *conn, timeout = conn->data->set.timeout; /* Wait for the name resolve query to complete. */ - while (timeout > 0) { + while (1) { int nfds=0; fd_set read_fds, write_fds; struct timeval *tvp, tv, store; @@ -641,6 +641,11 @@ CURLcode Curl_wait_for_resolv(struct connectdata *conn, ares_process(data->state.areschannel, &read_fds, &write_fds); timeout -= Curl_tvdiff(Curl_tvnow(), now)/1000; /* spent time */ + if (timeout < 0) { + /* our timeout, so we cancel the ares operation */ + ares_cancel(data->state.areschannel); + break; + } } /* Operation complete, if the lookup was successful we now have the entry |