From 5b1a869cd8b3aeaab60b8a7e7238c147f3198ce4 Mon Sep 17 00:00:00 2001 From: rtpmsys <106180646+rtpmsys@users.noreply.github.com> Date: Mon, 9 Jan 2023 14:38:40 +0100 Subject: [PATCH 1/3] Update WiFiClient.cpp This change will allow specifying connect timeouts below 1 second. Without this change, if connect timeouts under 1 second are given, the connect defaults to 0ms and fails. This will also allow timeouts in fractions of seconds, e.g. 1500ms. Without this change, connect timeouts are truncated to full second increments. --- libraries/WiFi/src/WiFiClient.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/WiFi/src/WiFiClient.cpp b/libraries/WiFi/src/WiFiClient.cpp index 6e56e94ac53..d5643bf0fc0 100644 --- a/libraries/WiFi/src/WiFiClient.cpp +++ b/libraries/WiFi/src/WiFiClient.cpp @@ -231,7 +231,7 @@ int WiFiClient::connect(IPAddress ip, uint16_t port, int32_t timeout) FD_ZERO(&fdset); FD_SET(sockfd, &fdset); tv.tv_sec = _timeout / 1000; - tv.tv_usec = 0; + tv.tv_usec = (_timeout % 1000) * 1000; #ifdef ESP_IDF_VERSION_MAJOR int res = lwip_connect(sockfd, (struct sockaddr*)&serveraddr, sizeof(serveraddr)); From 4e178db96e4df935ccae39f7f36518669ac8c4ab Mon Sep 17 00:00:00 2001 From: Rodrigo Garcia Date: Mon, 30 Jan 2023 00:17:01 -0300 Subject: [PATCH 2/3] Make parameter timeout_ms clear --- libraries/WiFi/src/WiFiClient.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/WiFi/src/WiFiClient.h b/libraries/WiFi/src/WiFiClient.h index e6e7ecd4b3c..b18f9324209 100644 --- a/libraries/WiFi/src/WiFiClient.h +++ b/libraries/WiFi/src/WiFiClient.h @@ -50,9 +50,9 @@ class WiFiClient : public ESPLwIPClient WiFiClient(int fd); ~WiFiClient(); int connect(IPAddress ip, uint16_t port); - int connect(IPAddress ip, uint16_t port, int32_t timeout); + int connect(IPAddress ip, uint16_t port, int32_t timeout_ms); int connect(const char *host, uint16_t port); - int connect(const char *host, uint16_t port, int32_t timeout); + int connect(const char *host, uint16_t port, int32_t timeout_ms); size_t write(uint8_t data); size_t write(const uint8_t *buf, size_t size); size_t write_P(PGM_P buf, size_t size); From c824c1672e4710d0df766ee0ad30056b7686d458 Mon Sep 17 00:00:00 2001 From: Rodrigo Garcia Date: Mon, 30 Jan 2023 00:20:59 -0300 Subject: [PATCH 3/3] Change connection timeout_ms name for clarity --- libraries/WiFi/src/WiFiClient.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libraries/WiFi/src/WiFiClient.cpp b/libraries/WiFi/src/WiFiClient.cpp index d5643bf0fc0..9e2a85f5dea 100644 --- a/libraries/WiFi/src/WiFiClient.cpp +++ b/libraries/WiFi/src/WiFiClient.cpp @@ -210,9 +210,9 @@ int WiFiClient::connect(IPAddress ip, uint16_t port) { return connect(ip,port,_timeout); } -int WiFiClient::connect(IPAddress ip, uint16_t port, int32_t timeout) +int WiFiClient::connect(IPAddress ip, uint16_t port, int32_t timeout_ms) { - _timeout = timeout; + _timeout = timeout_ms; int sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) { log_e("socket: %d", errno); @@ -292,13 +292,13 @@ int WiFiClient::connect(const char *host, uint16_t port) return connect(host,port,_timeout); } -int WiFiClient::connect(const char *host, uint16_t port, int32_t timeout) +int WiFiClient::connect(const char *host, uint16_t port, int32_t timeout_ms) { IPAddress srv((uint32_t)0); if(!WiFiGenericClass::hostByName(host, srv)){ return 0; } - return connect(srv, port, timeout); + return connect(srv, port, timeout_ms); } int WiFiClient::setSocketOption(int option, char* value, size_t len)