Commit 0bb20cc6 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

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

parent 433c0c89
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -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. */