diff options
-rw-r--r-- | lib/url.c | 13 |
1 files changed, 10 insertions, 3 deletions
@@ -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. */ |