diff --git a/libraries/WiFi/src/WiFiClient.cpp b/libraries/WiFi/src/WiFiClient.cpp index 6e56e94ac53..8a81d825f55 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)); @@ -315,6 +315,16 @@ int WiFiClient::setSocketOption(int level, int option, const void* value, size_t return res; } +int WiFiClient::getSocketOption(int level, int option, const void* value, size_t size) +{ + int res = getsockopt(fd(), level, option, (char *)value, &size); + if(res < 0) { + log_e("fail on fd %d, errno: %d, \"%s\"", fd(), errno, strerror(errno)); + } + return res; +} + + int WiFiClient::setTimeout(uint32_t seconds) { Client::setTimeout(seconds * 1000); // This should be here? diff --git a/libraries/WiFi/src/WiFiClient.h b/libraries/WiFi/src/WiFiClient.h index f36c51102e7..18b9b9c7a85 100644 --- a/libraries/WiFi/src/WiFiClient.h +++ b/libraries/WiFi/src/WiFiClient.h @@ -88,6 +88,7 @@ class WiFiClient : public ESPLwIPClient int setSocketOption(int option, char* value, size_t len); int setSocketOption(int level, int option, const void* value, size_t len); + int getSocketOption(int level, int option, const void* value, size_t size); int setOption(int option, int *value); int getOption(int option, int *value); int setTimeout(uint32_t seconds);