Skip to content
Snippets Groups Projects
Commit 7591e07b authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

do the alarm time-left math using unsigned longs since that is what alarm()

returns and uses as input and converting to signed generates warnings and
actually risks loss of accuracy
parent 35ab93f4
No related branches found
No related tags found
No related merge requests found
......@@ -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);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment