mirror of
https://github.com/moparisthebest/curl
synced 2024-12-22 08:08:50 -05:00
Dirk Manske's fix that makes sure we cancel the ares resolve when we time out
from a name resolve. Without this, we leak memory!
This commit is contained in:
parent
6c9d96e811
commit
ad9e83a90f
@ -617,7 +617,7 @@ CURLcode Curl_wait_for_resolv(struct connectdata *conn,
|
|||||||
timeout = conn->data->set.timeout;
|
timeout = conn->data->set.timeout;
|
||||||
|
|
||||||
/* Wait for the name resolve query to complete. */
|
/* Wait for the name resolve query to complete. */
|
||||||
while (timeout > 0) {
|
while (1) {
|
||||||
int nfds=0;
|
int nfds=0;
|
||||||
fd_set read_fds, write_fds;
|
fd_set read_fds, write_fds;
|
||||||
struct timeval *tvp, tv, store;
|
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);
|
ares_process(data->state.areschannel, &read_fds, &write_fds);
|
||||||
|
|
||||||
timeout -= Curl_tvdiff(Curl_tvnow(), now)/1000; /* spent time */
|
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
|
/* Operation complete, if the lookup was successful we now have the entry
|
||||||
|
Loading…
Reference in New Issue
Block a user