diff --git a/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp b/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp index 7a409e025..36545fcbb 100644 --- a/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp +++ b/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp @@ -50,6 +50,7 @@ HTTPClient::HTTPClient() { _returnCode = 0; _size = -1; _canReuse = false; + _tcpTimeout = HTTPCLIENT_DEFAULT_TCP_TIMEOUT; } @@ -252,6 +253,17 @@ void HTTPClient::setAuthorization(const char * auth) { } } +/** + * set the timeout for the TCP connection + * @param timeout unsigned int + */ +void HTTPClient::setTimeout(uint16_t timeout) { + _tcpTimeout = timeout; + if(connected()) { + _tcp->setTimeout(timeout); + } +} + /** * send a GET request * @return http code @@ -673,7 +685,7 @@ bool HTTPClient::connect(void) { } // set Timeout for readBytesUntil and readStringUntil - _tcp->setTimeout(HTTPCLIENT_TCP_TIMEOUT); + _tcp->setTimeout(_tcpTimeout); #ifdef ESP8266 _tcp->setNoDelay(true); diff --git a/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.h b/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.h index 74a27af5d..43c6b19ac 100644 --- a/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.h +++ b/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.h @@ -31,7 +31,7 @@ #define DEBUG_HTTPCLIENT(...) #endif -#define HTTPCLIENT_TCP_TIMEOUT (1000) +#define HTTPCLIENT_DEFAULT_TCP_TIMEOUT (1000) /// HTTP client errors #define HTTPC_ERROR_CONNECTION_REFUSED (-1) @@ -127,6 +127,7 @@ class HTTPClient { void setUserAgent(const char * userAgent); void setAuthorization(const char * user, const char * password); void setAuthorization(const char * auth); + void setTimeout(uint16_t timeout); /// request handling int GET(); @@ -170,7 +171,7 @@ class HTTPClient { String _host; uint16_t _port; bool _reuse; - + uint16_t _tcpTimeout; String _url; bool _https;