]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
Fix issue related with the use of ares_timeout() result.
authorYang Tse <yangsita@gmail.com>
Wed, 3 Oct 2007 13:19:34 +0000 (13:19 +0000)
committerYang Tse <yangsita@gmail.com>
Wed, 3 Oct 2007 13:19:34 +0000 (13:19 +0000)
CHANGES
RELEASE-NOTES
lib/hostares.c

diff --git a/CHANGES b/CHANGES
index 803bf0f8513efa0ffc5593b3d82b71c5b022004a..ebda3001b514afd869027539c8f8a98fd83fef06 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -7,6 +7,8 @@
                                   Changelog
 
 Daniel S (3 October 2007)
+- Yang Tse, fix issue related with the use of ares_timeout() result.
+
 - Alexey Pesternikov introduced CURLOPT_OPENSOCKETFUNCTION and
   CURLOPT_OPENSOCKETDATA to set a callback that allows an application to
   replace the socket() call used by libcurl. It basically allows the app to
index cfba051bcb139fa0c5453fa039cd72fec9ea129b..be84ebd331bb3f5cd470be894cc249eb752033bd 100644 (file)
@@ -33,6 +33,7 @@ This release includes the following bugfixes:
  o re-used handle transfers with SFTP
  o curl_easy_escape() problem with byte values >= 128
  o handles chunked-encoded CONNECT responses
+ o misuse of ares_timeout() result
 
 This release includes the following known bugs:
 
index 4c49411ae51a2846ea707522997d2e59cf2c1dbe..81707ac7c8cf7c3ba13e8401e8f525c80d79d653 100644 (file)
@@ -109,7 +109,8 @@ int Curl_resolv_getsock(struct connectdata *conn,
 
 {
   struct timeval maxtime;
-  struct timeval timeout;
+  struct timeval timebuf;
+  struct timeval *timeout;
   int max = ares_getsock(conn->data->state.areschannel,
                          (int *)socks, numsocks);
 
@@ -117,10 +118,10 @@ int Curl_resolv_getsock(struct connectdata *conn,
   maxtime.tv_sec = CURL_TIMEOUT_RESOLVE;
   maxtime.tv_usec = 0;
 
-  ares_timeout(conn->data->state.areschannel, &maxtime, &timeout);
+  timeout = ares_timeout(conn->data->state.areschannel, &maxtime, &timebuf);
 
   Curl_expire(conn->data,
-              (timeout.tv_sec * 1000) + (timeout.tv_usec/1000) );
+              (timeout->tv_sec * 1000) + (timeout->tv_usec/1000));
 
   return max;
 }
@@ -254,7 +255,7 @@ CURLcode Curl_wait_for_resolv(struct connectdata *conn,
     tvp = ares_timeout(data->state.areschannel, &store, &tv);
 
     /* use the timeout period ares returned to us above */
-    ares_waitperform(conn, tv.tv_sec * 1000 + tv.tv_usec/1000);
+    ares_waitperform(conn, tvp->tv_sec * 1000 + tvp->tv_usec/1000);
 
     if(conn->async.done)
       break;