diff options
| author | Daniel Stenberg <daniel@haxx.se> | 2017-10-26 15:24:50 +0200 | 
|---|---|---|
| committer | Daniel Stenberg <daniel@haxx.se> | 2017-10-28 10:40:51 +0200 | 
| commit | 0d85eed3dfbbce18303900385d17f84d939cef00 (patch) | |
| tree | e86f91d28fd31de4cc625fc1db9e2650f5feef11 | |
| parent | 9dfc541dd7d11870d51b69c93083b805de30239f (diff) | |
Curl_timeleft: change return type to timediff_t
returning 'time_t' is problematic when that type is unsigned and we
return values less than zero to signal "already expired", used in
several places in the code.
Closes #2021
| -rw-r--r-- | lib/asyn-ares.c | 2 | ||||
| -rwxr-xr-x | lib/connect.c | 10 | ||||
| -rw-r--r-- | lib/connect.h | 7 | ||||
| -rw-r--r-- | lib/ftp.c | 6 | ||||
| -rw-r--r-- | lib/multi.c | 2 | ||||
| -rw-r--r-- | lib/socks.c | 4 | ||||
| -rw-r--r-- | lib/ssh.c | 2 | ||||
| -rw-r--r-- | lib/tftp.c | 2 | ||||
| -rw-r--r-- | lib/url.c | 2 | 
9 files changed, 19 insertions, 18 deletions
| diff --git a/lib/asyn-ares.c b/lib/asyn-ares.c index dd7dc4028..38ede999c 100644 --- a/lib/asyn-ares.c +++ b/lib/asyn-ares.c @@ -354,7 +354,7 @@ CURLcode Curl_resolver_wait_resolv(struct connectdata *conn,  {    CURLcode result = CURLE_OK;    struct Curl_easy *data = conn->data; -  long timeout; +  timediff_t timeout;    struct curltime now = Curl_now();    struct Curl_dns_entry *temp_entry; diff --git a/lib/connect.c b/lib/connect.c index 5f545f230..787026942 100755 --- a/lib/connect.c +++ b/lib/connect.c @@ -179,12 +179,12 @@ singleipconnect(struct connectdata *conn,   *   * @unittest: 1303   */ -time_t Curl_timeleft(struct Curl_easy *data, -                     struct curltime *nowp, -                     bool duringconnect) +timediff_t Curl_timeleft(struct Curl_easy *data, +                         struct curltime *nowp, +                         bool duringconnect)  {    int timeout_set = 0; -  time_t timeout_ms = duringconnect?DEFAULT_CONNECT_TIMEOUT:0; +  timediff_t timeout_ms = duringconnect?DEFAULT_CONNECT_TIMEOUT:0;    struct curltime now;    /* if a timeout is set, use the most restrictive one */ @@ -1148,7 +1148,7 @@ CURLcode Curl_connecthost(struct connectdata *conn,  /* context */    struct curltime before = Curl_now();    CURLcode result = CURLE_COULDNT_CONNECT; -  time_t timeout_ms = Curl_timeleft(data, &before, TRUE); +  timediff_t timeout_ms = Curl_timeleft(data, &before, TRUE);    if(timeout_ms < 0) {      /* a precaution, no need to continue if time already is up */ diff --git a/lib/connect.h b/lib/connect.h index 3f05c3978..397448636 100644 --- a/lib/connect.h +++ b/lib/connect.h @@ -25,6 +25,7 @@  #include "nonblock.h" /* for curlx_nonblock(), formerly Curl_nonblock() */  #include "sockaddr.h" +#include "timeval.h"  CURLcode Curl_is_connected(struct connectdata *conn,                             int sockindex, @@ -35,9 +36,9 @@ CURLcode Curl_connecthost(struct connectdata *conn,  /* generic function that returns how much time there's left to run, according     to the timeouts set */ -time_t Curl_timeleft(struct Curl_easy *data, -                     struct curltime *nowp, -                     bool duringconnect); +timediff_t Curl_timeleft(struct Curl_easy *data, +                         struct curltime *nowp, +                         bool duringconnect);  #define DEFAULT_CONNECT_TIMEOUT 300000 /* milliseconds == five minutes */  #define HAPPY_EYEBALLS_TIMEOUT     200 /* milliseconds to wait between @@ -333,10 +333,10 @@ static CURLcode AcceptServerConnect(struct connectdata *conn)   * Curl_pgrsTime(..., TIMER_STARTACCEPT);   *   */ -static time_t ftp_timeleft_accept(struct Curl_easy *data) +static timediff_t ftp_timeleft_accept(struct Curl_easy *data)  { -  time_t timeout_ms = DEFAULT_ACCEPT_TIMEOUT; -  time_t other; +  timediff_t timeout_ms = DEFAULT_ACCEPT_TIMEOUT; +  timediff_t other;    struct curltime now;    if(data->set.accepttimeout > 0) diff --git a/lib/multi.c b/lib/multi.c index 658a18b15..262f192ca 100644 --- a/lib/multi.c +++ b/lib/multi.c @@ -1318,7 +1318,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,    struct SingleRequest *k;    time_t timeout_ms;    time_t recv_timeout_ms; -  time_t send_timeout_ms; +  timediff_t send_timeout_ms;    int control;    if(!GOOD_EASY_HANDLE(data)) diff --git a/lib/socks.c b/lib/socks.c index e64cb98d4..ac4270eac 100644 --- a/lib/socks.c +++ b/lib/socks.c @@ -57,7 +57,7 @@ int Curl_blockread_all(struct connectdata *conn, /* connection data */    ssize_t nread;    ssize_t allread = 0;    int result; -  time_t timeleft; +  timediff_t timeleft;    *n = 0;    for(;;) {      timeleft = Curl_timeleft(conn->data, NULL, TRUE); @@ -382,7 +382,7 @@ CURLcode Curl_SOCKS5(const char *proxy_user,    CURLcode code;    curl_socket_t sock = conn->sock[sockindex];    struct Curl_easy *data = conn->data; -  time_t timeout; +  timediff_t timeout;    bool socks5_resolve_local =      (conn->socks_proxy.proxytype == CURLPROXY_SOCKS5) ? TRUE : FALSE;    const size_t hostname_len = strlen(hostname); @@ -2833,7 +2833,7 @@ static CURLcode ssh_block_statemach(struct connectdata *conn,    while((sshc->state != SSH_STOP) && !result) {      bool block; -    time_t left = 1000; +    timediff_t left = 1000;      struct curltime now = Curl_now();      result = ssh_statemach_act(conn, &block); diff --git a/lib/tftp.c b/lib/tftp.c index a47c24162..20dc60040 100644 --- a/lib/tftp.c +++ b/lib/tftp.c @@ -200,7 +200,7 @@ const struct Curl_handler Curl_handler_tftp = {  static CURLcode tftp_set_timeouts(tftp_state_data_t *state)  {    time_t maxtime, timeout; -  time_t timeout_ms; +  timediff_t timeout_ms;    bool start = (state->state == TFTP_STATE_START) ? TRUE : FALSE;    time(&state->start_time); @@ -6323,7 +6323,7 @@ static CURLcode resolve_server(struct Curl_easy *data,                                 bool *async)  {    CURLcode result = CURLE_OK; -  time_t timeout_ms = Curl_timeleft(data, NULL, TRUE); +  timediff_t timeout_ms = Curl_timeleft(data, NULL, TRUE);    /*************************************************************     * Resolve the name of the server or proxy | 
