aboutsummaryrefslogtreecommitdiff
path: root/lib/asyn-ares.c
diff options
context:
space:
mode:
authorMichael Kaufmann <mail@michael-kaufmann.ch>2017-05-20 19:39:51 +0200
committerMichael Kaufmann <mail@michael-kaufmann.ch>2017-05-24 22:56:22 +0200
commit8ab22a74533acee61af31c48e75269822f408cb4 (patch)
tree24025f8450cf3b72eb5bf9316c1212b0a571363c /lib/asyn-ares.c
parentb4d87f54d60711e936fefae388d741b281eecdf0 (diff)
time: fix type conversions and compiler warnings
Fix bugs and compiler warnings on systems with 32-bit long and 64-bit time_t. Reviewed-by: Daniel Stenberg Closes #1499
Diffstat (limited to 'lib/asyn-ares.c')
-rw-r--r--lib/asyn-ares.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/lib/asyn-ares.c b/lib/asyn-ares.c
index 12f35e412..fb3d3fec0 100644
--- a/lib/asyn-ares.c
+++ b/lib/asyn-ares.c
@@ -373,7 +373,6 @@ CURLcode Curl_resolver_wait_resolv(struct connectdata *conn,
/* Wait for the name resolve query to complete. */
while(!result) {
struct timeval *tvp, tv, store;
- long timediff;
int itimeout;
int timeout_ms;
@@ -402,8 +401,13 @@ CURLcode Curl_resolver_wait_resolv(struct connectdata *conn,
result = CURLE_ABORTED_BY_CALLBACK;
else {
struct timeval now2 = Curl_tvnow();
- timediff = Curl_tvdiff(now2, now); /* spent time */
- timeout -= timediff?timediff:1; /* always deduct at least 1 */
+ time_t timediff = Curl_tvdiff(now2, now); /* spent time */
+ if(timediff <= 0)
+ timeout -= 1; /* always deduct at least 1 */
+ else if(timediff > timeout)
+ timeout = -1;
+ else
+ timeout -= (long)timediff;
now = now2; /* for next loop */
}
if(timeout < 0)