Commit ad9e83a9 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

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!
parent 6c9d96e8
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -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