mirror of
https://github.com/curl/curl.git
synced 2025-10-01 00:16:48 +03:00
Fix issue related with the use of ares_timeout() result.
This commit is contained in:
parent
4bf28cb904
commit
3f3a38f9c6
2
CHANGES
2
CHANGES
|
@ -7,6 +7,8 @@
|
||||||
Changelog
|
Changelog
|
||||||
|
|
||||||
Daniel S (3 October 2007)
|
Daniel S (3 October 2007)
|
||||||
|
- Yang Tse, fix issue related with the use of ares_timeout() result.
|
||||||
|
|
||||||
- Alexey Pesternikov introduced CURLOPT_OPENSOCKETFUNCTION and
|
- Alexey Pesternikov introduced CURLOPT_OPENSOCKETFUNCTION and
|
||||||
CURLOPT_OPENSOCKETDATA to set a callback that allows an application to
|
CURLOPT_OPENSOCKETDATA to set a callback that allows an application to
|
||||||
replace the socket() call used by libcurl. It basically allows the app to
|
replace the socket() call used by libcurl. It basically allows the app to
|
||||||
|
|
|
@ -33,6 +33,7 @@ This release includes the following bugfixes:
|
||||||
o re-used handle transfers with SFTP
|
o re-used handle transfers with SFTP
|
||||||
o curl_easy_escape() problem with byte values >= 128
|
o curl_easy_escape() problem with byte values >= 128
|
||||||
o handles chunked-encoded CONNECT responses
|
o handles chunked-encoded CONNECT responses
|
||||||
|
o misuse of ares_timeout() result
|
||||||
|
|
||||||
This release includes the following known bugs:
|
This release includes the following known bugs:
|
||||||
|
|
||||||
|
|
|
@ -109,7 +109,8 @@ int Curl_resolv_getsock(struct connectdata *conn,
|
||||||
|
|
||||||
{
|
{
|
||||||
struct timeval maxtime;
|
struct timeval maxtime;
|
||||||
struct timeval timeout;
|
struct timeval timebuf;
|
||||||
|
struct timeval *timeout;
|
||||||
int max = ares_getsock(conn->data->state.areschannel,
|
int max = ares_getsock(conn->data->state.areschannel,
|
||||||
(int *)socks, numsocks);
|
(int *)socks, numsocks);
|
||||||
|
|
||||||
|
@ -117,10 +118,10 @@ int Curl_resolv_getsock(struct connectdata *conn,
|
||||||
maxtime.tv_sec = CURL_TIMEOUT_RESOLVE;
|
maxtime.tv_sec = CURL_TIMEOUT_RESOLVE;
|
||||||
maxtime.tv_usec = 0;
|
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,
|
Curl_expire(conn->data,
|
||||||
(timeout.tv_sec * 1000) + (timeout.tv_usec/1000) );
|
(timeout->tv_sec * 1000) + (timeout->tv_usec/1000));
|
||||||
|
|
||||||
return max;
|
return max;
|
||||||
}
|
}
|
||||||
|
@ -254,7 +255,7 @@ CURLcode Curl_wait_for_resolv(struct connectdata *conn,
|
||||||
tvp = ares_timeout(data->state.areschannel, &store, &tv);
|
tvp = ares_timeout(data->state.areschannel, &store, &tv);
|
||||||
|
|
||||||
/* use the timeout period ares returned to us above */
|
/* 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)
|
if(conn->async.done)
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user