]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
Curl_timeleft: change return type to timediff_t
authorDaniel Stenberg <daniel@haxx.se>
Thu, 26 Oct 2017 13:24:50 +0000 (15:24 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Sat, 28 Oct 2017 08:40:51 +0000 (10:40 +0200)
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

lib/asyn-ares.c
lib/connect.c
lib/connect.h
lib/ftp.c
lib/multi.c
lib/socks.c
lib/ssh.c
lib/tftp.c
lib/url.c

index dd7dc4028bb1f07a8b85ac2ca9562b94decc96fc..38ede999ce4f4ded6122d929a7894da92b14a1bc 100644 (file)
@@ -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;
 
index 5f545f230ed8b04bb61ff717fe893d50739490b8..7870269426200e58d22f016ed358fa7d49df360c 100755 (executable)
@@ -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 */
index 3f05c3978443faa87b1335335e9935a31a17c055..39744863643ecaf724427ee0c671b24fb6131014 100644 (file)
@@ -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
index 5c7df2b4c652e11600fcf42751836b32e47632fb..8042edf4880cff7bb316a58ce94e5e345c90d4a0 100644 (file)
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -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)
index 658a18b15bd6ba8d3515bcddb7a0cd2b205298c6..262f192ca36f2d3fb1f798efef26b87f86df2f63 100644 (file)
@@ -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))
index e64cb98d41d9a35bda10440d8861d39b2fb0a50e..ac4270eacf7d9e2c59847c7d024f59b89072f224 100644 (file)
@@ -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);
index e225ed29775c13905959c86aae0e295c03077df2..c4a369997318cd6c9fa9f1d3eac85c5373582cc0 100644 (file)
--- a/lib/ssh.c
+++ b/lib/ssh.c
@@ -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);
index a47c241627bb6c2664433a7de4c00796685601f3..20dc600409451f7c5c0ef11ace5fb61cfd0d5392 100644 (file)
@@ -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);
index 03ee0855ac243394432658805e90ecf261a36805..5a11e423bb20a2a14aaf025b44eebe88b9019676 100644 (file)
--- a/lib/url.c
+++ b/lib/url.c
@@ -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