Skip to content

Commit 49ea525

Browse files
committed
WiFiClients - setTimeout replaced with setConnectionTimeout
to not shadow Stream::setTimeout which has a different purpose
1 parent 29cde94 commit 49ea525

File tree

5 files changed

+25
-5
lines changed

5 files changed

+25
-5
lines changed

Diff for: libraries/HTTPClient/src/HTTPClient.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -1166,6 +1166,7 @@ bool HTTPClient::connect(void)
11661166

11671167
// set Timeout for WiFiClient and for Stream::readBytesUntil() and Stream::readStringUntil()
11681168
_client->setTimeout(_tcpTimeout);
1169+
_client->setConnectionTimeout(_tcpTimeout);
11691170

11701171
log_d(" connected to %s:%u", _host.c_str(), _port);
11711172

Diff for: libraries/WiFi/src/WiFiClient.cpp

+17
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,23 @@ int WiFiClient::getSocketOption(int level, int option, const void* value, size_t
333333
return res;
334334
}
335335

336+
int WiFiClient::setConnectionTimeout(uint32_t milliseconds)
337+
{
338+
_timeout = milliseconds;
339+
if(fd() >= 0) {
340+
struct timeval tv;
341+
tv.tv_sec = _timeout / 1000;
342+
tv.tv_usec = (_timeout % 1000) * 1000;
343+
if(setSocketOption(SO_RCVTIMEO, (char *)&tv, sizeof(struct timeval)) < 0) {
344+
return -1;
345+
}
346+
return setSocketOption(SO_SNDTIMEO, (char *)&tv, sizeof(struct timeval));
347+
}
348+
else {
349+
return 0;
350+
}
351+
}
352+
336353
int WiFiClient::setOption(int option, int *value)
337354
{
338355
return setSocketOption(IPPROTO_TCP, option, (const void*)value, sizeof(int));

Diff for: libraries/WiFi/src/WiFiClient.h

+2
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ class ESPLwIPClient : public Client
3333
public:
3434
virtual int connect(IPAddress ip, uint16_t port, int32_t timeout) = 0;
3535
virtual int connect(const char *host, uint16_t port, int32_t timeout) = 0;
36+
virtual int setConnectionTimeout(uint32_t milliseconds) = 0;
3637
};
3738

3839
class WiFiClient : public ESPLwIPClient
@@ -92,6 +93,7 @@ class WiFiClient : public ESPLwIPClient
9293
int getSocketOption(int level, int option, const void* value, size_t size);
9394
int setOption(int option, int *value);
9495
int getOption(int option, int *value);
96+
int setConnectionTimeout(uint32_t milliseconds);
9597
int setNoDelay(bool nodelay);
9698
bool getNoDelay();
9799

Diff for: libraries/WiFiClientSecure/src/WiFiClientSecure.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -401,13 +401,13 @@ void WiFiClientSecure::setAlpnProtocols(const char **alpn_protos)
401401
{
402402
_alpn_protos = alpn_protos;
403403
}
404-
int WiFiClientSecure::setTimeout(uint32_t seconds)
404+
int WiFiClientSecure::setConnectionTimeout(uint32_t milliseconds)
405405
{
406-
_timeout = seconds * 1000;
406+
_timeout = milliseconds;
407407
if (sslclient->socket >= 0) {
408408
struct timeval tv;
409-
tv.tv_sec = seconds;
410-
tv.tv_usec = 0;
409+
tv.tv_sec = _timeout / 1000;
410+
tv.tv_usec = (_timeout % 1000) * 1000;
411411
if(setSocketOption(SO_RCVTIMEO, (char *)&tv, sizeof(struct timeval)) < 0) {
412412
return -1;
413413
}

Diff for: libraries/WiFiClientSecure/src/WiFiClientSecure.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ class WiFiClientSecure : public WiFiClient
8080
void setAlpnProtocols(const char **alpn_protos);
8181
const mbedtls_x509_crt* getPeerCertificate() { return mbedtls_ssl_get_peer_cert(&sslclient->ssl_ctx); };
8282
bool getFingerprintSHA256(uint8_t sha256_result[32]) { return get_peer_fingerprint(sslclient, sha256_result); };
83-
int setTimeout(uint32_t seconds);
83+
int setConnectionTimeout(uint32_t milliseconds);
8484
int fd() const;
8585

8686
operator bool()

0 commit comments

Comments
 (0)