aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/url.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/lib/url.c b/lib/url.c
index 215a1bbd3..398815384 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -3174,14 +3174,16 @@ static CURLcode CreateConnection(struct SessionHandle *data,
the time we spent until now! */
if(prev_alarm) {
/* there was an alarm() set before us, now put it back */
- long elapsed_ms = Curl_tvdiff(Curl_tvnow(), conn->created);
- long alarm_set;
+ unsigned long elapsed_ms = Curl_tvdiff(Curl_tvnow(), conn->created);
+ unsigned long alarm_set;
/* the alarm period is counted in even number of seconds */
alarm_set = prev_alarm - elapsed_ms/1000;
-
- if(alarm_set<=0) {
- /* if it turned negative, we should fire off a SIGALRM here, but we
+
+ if(!alarm_set ||
+ ((alarm_set >= 0x80000000) && (prev_alarm < 0x80000000)) ) {
+ /* if the alarm time-left reached zero or turned "negative" (counted
+ with unsigned values), we should fire off a SIGALRM here, but we
won't, and zero would be to switch it off so we never set it to
less than 1! */
alarm(1);