diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/connect.c | 7 | ||||
| -rw-r--r-- | lib/multi.c | 3 | ||||
| -rw-r--r-- | lib/progress.c | 8 | ||||
| -rw-r--r-- | lib/progress.h | 5 | ||||
| -rw-r--r-- | lib/urldata.h | 1 | 
5 files changed, 18 insertions, 6 deletions
| diff --git a/lib/connect.c b/lib/connect.c index b35c36c00..ca6e3466c 100644 --- a/lib/connect.c +++ b/lib/connect.c @@ -224,7 +224,12 @@ long Curl_timeleft(struct SessionHandle *data,    }    /* subtract elapsed time */ -  timeout_ms -= Curl_tvdiff(*nowp, data->progress.t_startsingle); +  if(duringconnect) +    /* since this most recent connect started */ +    timeout_ms -= Curl_tvdiff(*nowp, data->progress.t_startsingle); +  else +    /* since the entire operation started */ +    timeout_ms -= Curl_tvdiff(*nowp, data->progress.t_startop);    if(!timeout_ms)      /* avoid returning 0 as that means no timeout! */      return -1; diff --git a/lib/multi.c b/lib/multi.c index c52db9625..72fde7439 100644 --- a/lib/multi.c +++ b/lib/multi.c @@ -1026,7 +1026,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,        if(CURLE_OK == data->result) {          /* after init, go CONNECT */          multistate(data, CURLM_STATE_CONNECT); -        Curl_pgrsTime(data, TIMER_STARTSINGLE); +        Curl_pgrsTime(data, TIMER_STARTOP);          result = CURLM_CALL_MULTI_PERFORM;        }        break; @@ -1038,6 +1038,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,      case CURLM_STATE_CONNECT:        /* Connect. We want to get a connection identifier filled in. */ +      Curl_pgrsTime(data, TIMER_STARTSINGLE);        data->result = Curl_connect(data, &data->easy_conn,                                    &async, &protocol_connect);        if(CURLE_NO_CONNECTION_AVAILABLE == data->result) { diff --git a/lib/progress.c b/lib/progress.c index a242f8bc2..e6a8d825a 100644 --- a/lib/progress.c +++ b/lib/progress.c @@ -5,7 +5,7 @@   *                            | (__| |_| |  _ <| |___   *                             \___|\___/|_| \_\_____|   * - * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al. + * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.   *   * This software is licensed as described in the file COPYING, which   * you should have received as part of this distribution. The terms @@ -172,8 +172,12 @@ void Curl_pgrsTime(struct SessionHandle *data, timerid timer)    case TIMER_NONE:      /* mistake filter */      break; +  case TIMER_STARTOP: +    /* This is set at the start of a transfer */ +    data->progress.t_startop = now; +    break;    case TIMER_STARTSINGLE: -    /* This is set at the start of a single fetch */ +    /* This is set at the start of each single fetch */      data->progress.t_startsingle = now;      break; diff --git a/lib/progress.h b/lib/progress.h index f97fef996..a1e6f1a23 100644 --- a/lib/progress.h +++ b/lib/progress.h @@ -7,7 +7,7 @@   *                            | (__| |_| |  _ <| |___   *                             \___|\___/|_| \_\_____|   * - * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al. + * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.   *   * This software is licensed as described in the file COPYING, which   * you should have received as part of this distribution. The terms @@ -27,13 +27,14 @@  typedef enum {    TIMER_NONE, +  TIMER_STARTOP, +  TIMER_STARTSINGLE,    TIMER_NAMELOOKUP,    TIMER_CONNECT,    TIMER_APPCONNECT,    TIMER_PRETRANSFER,    TIMER_STARTTRANSFER,    TIMER_POSTRANSFER, -  TIMER_STARTSINGLE,    TIMER_STARTACCEPT,    TIMER_REDIRECT,    TIMER_LAST /* must be last */ diff --git a/lib/urldata.h b/lib/urldata.h index e62ea1930..640cbb1c6 100644 --- a/lib/urldata.h +++ b/lib/urldata.h @@ -1135,6 +1135,7 @@ struct Progress {    struct timeval start;    struct timeval t_startsingle; +  struct timeval t_startop;    struct timeval t_acceptdata;  #define CURR_TIME (5+1) /* 6 entries for 5 seconds */ | 
