From ad9e83a90ff756eb38099856cd80340189ae7d32 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Thu, 1 Apr 2004 08:40:36 +0000 Subject: [PATCH] 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! --- lib/hostip.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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