From d1a6b32133f281b64d84d194a30546b7a4069563 Mon Sep 17 00:00:00 2001 From: Denver Abrey Date: Sun, 27 Dec 2015 19:45:17 +0200 Subject: [PATCH 1/2] Allow setting TCP timeout --- libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp | 11 ++++++++++- libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.h | 5 +++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp b/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp index 7a409e025..65d7339ac 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,14 @@ 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; +} + /** * send a GET request * @return http code @@ -673,7 +682,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; From 80857e3f8795d2a0f65c4a1655a03d9b1ee6a53d Mon Sep 17 00:00:00 2001 From: Denver Abrey Date: Sun, 27 Dec 2015 20:02:08 +0200 Subject: [PATCH 2/2] Also set timeout on already existing connections --- libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp b/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp index 65d7339ac..36545fcbb 100644 --- a/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp +++ b/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp @@ -259,6 +259,9 @@ void HTTPClient::setAuthorization(const char * auth) { */ void HTTPClient::setTimeout(uint16_t timeout) { _tcpTimeout = timeout; + if(connected()) { + _tcp->setTimeout(timeout); + } } /**