fix the name resolve abort timeout calculation (when signals are used)

This commit is contained in:
Daniel Stenberg 2006-10-17 08:05:41 +00:00
parent 433c0c895e
commit 0bb20cc611
1 changed files with 10 additions and 3 deletions

View File

@ -3668,6 +3668,15 @@ static CURLcode CreateConnection(struct SessionHandle *data,
* Set signal handler to catch SIGALRM
* Store the old value to be able to set it back later!
*************************************************************/
long shortest = data->set.timeout; /* default to this timeout value */
if(shortest && data->set.connecttimeout &&
(data->set.connecttimeout < shortest))
/* if both are set, pick the shortest */
shortest = data->set.connecttimeout;
else if(!shortest)
/* if timeout is not set, use the connect timeout */
shortest = data->set.connecttimeout
#ifdef SIGALRM
#ifdef HAVE_SIGACTION
@ -3697,9 +3706,7 @@ static CURLcode CreateConnection(struct SessionHandle *data,
#ifdef HAVE_ALARM
/* alarm() makes a signal get sent when the timeout fires off, and that
will abort system calls */
prev_alarm = alarm((unsigned int) (data->set.connecttimeout?
data->set.connecttimeout:
data->set.timeout));
prev_alarm = alarm((unsigned int) shortest);
/* We can expect the conn->created time to be "now", as that was just
recently set in the beginning of this function and nothing slow
has been done since then until now. */