mirror of
https://github.com/arendst/Tasmota.git
synced 2026-10-26 22:11:22 +00:00
HttpClientLight: keep read timeouts longer than 65 s (#25180)
The read timeout was kept in 16 bits, so a longer one wrapped: Berry's webclient.set_timeouts(80000) gave up after about 14.5 s, and 70000 after 4.5 s. Keep it in 32 bits, in HttpClientLight and AsyncHttpClientLight, as ESPEasy's copy of the client now does.
This commit is contained in:
1 parent
06d51e8fc2
commit
4df6fa1d4b
4 files changed
+11
-11
No files matched your search
@@ -224,7 +224,7 @@ int AsyncHttpClientLight::BearSslAdapter::read(uint8_t* buf, size_t len)
|
||||
int AsyncHttpClientLight::BearSslAdapter::available() { return _cli->available(); }
|
||||
bool AsyncHttpClientLight::BearSslAdapter::connected() { return _cli->connected(); }
|
||||
void AsyncHttpClientLight::BearSslAdapter::stop() { _cli->stop(); }
|
||||
void AsyncHttpClientLight::BearSslAdapter::setTimeout(uint16_t ms) { _cli->setTimeout(ms); }
|
||||
void AsyncHttpClientLight::BearSslAdapter::setTimeout(uint32_t ms) { _cli->setTimeout(ms); }
|
||||
#endif
|
||||
|
||||
// ======================== AsyncHttpClientLight core =====================
|
||||
@@ -262,7 +262,7 @@ void AsyncHttpClientLight::setAuthorization(const char * user, const char * pass
|
||||
}
|
||||
void AsyncHttpClientLight::setAuthorization(const char * auth) { if (auth) _base64Authorization = auth; }
|
||||
|
||||
void AsyncHttpClientLight::setTimeout(uint16_t timeout) {
|
||||
void AsyncHttpClientLight::setTimeout(uint32_t timeout) {
|
||||
_tcpTimeout = timeout;
|
||||
if (_transport) _transport->setTimeout(timeout);
|
||||
}
|
||||
|
||||
@@ -107,7 +107,7 @@ public:
|
||||
void setAuthorization(const char * user, const char * password);
|
||||
void setAuthorization(const char * auth);
|
||||
void setConnectTimeout(int32_t connectTimeout) { _connectTimeout = connectTimeout; }
|
||||
void setTimeout(uint16_t timeout);
|
||||
void setTimeout(uint32_t timeout);
|
||||
void useHTTP10(bool useHTTP10) { _useHTTP10 = useHTTP10; _reuse = !useHTTP10; }
|
||||
void setFollowRedirects(followRedirects_t follow) { _followRedirects = follow; }
|
||||
void setRedirectLimit(uint16_t limit) { _redirectLimit = limit; }
|
||||
@@ -181,7 +181,7 @@ private:
|
||||
virtual int available() = 0;
|
||||
virtual bool connected() = 0;
|
||||
virtual void stop() = 0;
|
||||
virtual void setTimeout(uint16_t ms) = 0;
|
||||
virtual void setTimeout(uint32_t ms) = 0;
|
||||
};
|
||||
|
||||
class AsyncTcpAdapter : public IClientLite {
|
||||
@@ -196,12 +196,12 @@ private:
|
||||
int available() override;
|
||||
bool connected() override;
|
||||
void stop() override;
|
||||
void setTimeout(uint16_t ms) override { _rwTimeout = ms; }
|
||||
void setTimeout(uint32_t ms) override { _rwTimeout = ms; }
|
||||
|
||||
private:
|
||||
int _fd = -1;
|
||||
bool _isConnected = false;
|
||||
uint16_t _rwTimeout = 5000;
|
||||
uint32_t _rwTimeout = 5000;
|
||||
|
||||
bool connect_fd(const struct sockaddr_in& sa, int32_t timeout_ms);
|
||||
};
|
||||
@@ -221,7 +221,7 @@ private:
|
||||
int available() override;
|
||||
bool connected() override;
|
||||
void stop() override;
|
||||
void setTimeout(uint16_t ms) override;
|
||||
void setTimeout(uint32_t ms) override;
|
||||
|
||||
private:
|
||||
std::unique_ptr<BearSSL::WiFiClientSecure_light> _cli;
|
||||
@@ -284,7 +284,7 @@ private:
|
||||
String _headers;
|
||||
String _userAgent = F("AsyncHttpClientLight");
|
||||
String _base64Authorization;
|
||||
uint16_t _tcpTimeout = 5000;
|
||||
uint32_t _tcpTimeout = 5000;
|
||||
int32_t _connectTimeout = 10000;
|
||||
bool _reuse = true;
|
||||
bool _canReuse = false;
|
||||
|
||||
@@ -497,7 +497,7 @@ void HTTPClientLight::setConnectTimeout(int32_t connectTimeout)
|
||||
* set the timeout for the TCP connection
|
||||
* @param timeout unsigned int
|
||||
*/
|
||||
void HTTPClientLight::setTimeout(uint16_t timeout)
|
||||
void HTTPClientLight::setTimeout(uint32_t timeout)
|
||||
{
|
||||
_tcpTimeout = timeout;
|
||||
if(connected()) {
|
||||
|
||||
@@ -176,7 +176,7 @@ public:
|
||||
void setAuthorization(const char * user, const char * password);
|
||||
void setAuthorization(const char * auth);
|
||||
void setConnectTimeout(int32_t connectTimeout);
|
||||
void setTimeout(uint16_t timeout);
|
||||
void setTimeout(uint32_t timeout);
|
||||
|
||||
// Redirections
|
||||
void setFollowRedirects(followRedirects_t follow);
|
||||
@@ -248,7 +248,7 @@ protected:
|
||||
uint16_t _port = 0;
|
||||
int32_t _connectTimeout = HTTPCLIENT_DEFAULT_TCP_TIMEOUT; // Do not set to -1 as it fails WiFiClient connect()
|
||||
bool _reuse = true;
|
||||
uint16_t _tcpTimeout = HTTPCLIENT_DEFAULT_TCP_TIMEOUT;
|
||||
uint32_t _tcpTimeout = HTTPCLIENT_DEFAULT_TCP_TIMEOUT;
|
||||
bool _useHTTP10 = false;
|
||||
bool _secure = false;
|
||||
|
||||
|
||||
Reference in new issue
Block a user