From 0bb20cc61184c92eb75d92d452ab8298a8281b8b Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Tue, 17 Oct 2006 08:05:41 +0000 Subject: fix the name resolve abort timeout calculation (when signals are used) --- lib/url.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'lib') diff --git a/lib/url.c b/lib/url.c index 1b6f0bb7c..13670cf0b 100644 --- a/lib/url.c +++ b/lib/url.c @@ -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. */ -- cgit v1.2.3