From a451c9ef0de45fee5f73b77f73723566b6949eac Mon Sep 17 00:00:00 2001 From: me-no-dev Date: Tue, 16 Mar 2021 21:28:19 +0200 Subject: [PATCH] Fix HTTPClient crash on GET() for url with redirects Fixes: https://github.com/espressif/arduino-esp32/issues/4931 --- libraries/HTTPClient/src/HTTPClient.cpp | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/libraries/HTTPClient/src/HTTPClient.cpp b/libraries/HTTPClient/src/HTTPClient.cpp index 2d95446e..c0a801a4 100644 --- a/libraries/HTTPClient/src/HTTPClient.cpp +++ b/libraries/HTTPClient/src/HTTPClient.cpp @@ -109,6 +109,12 @@ HTTPClient::~HTTPClient() if(_currentHeaders) { delete[] _currentHeaders; } + if(_tcpDeprecated) { + _tcpDeprecated.reset(nullptr); + } + if(_transportTraits) { + _transportTraits.reset(nullptr); + } } void HTTPClient::clear() @@ -284,7 +290,7 @@ bool HTTPClient::beginInternal(String url, const char* expectedProtocol) } _host = the_host; _uri = url; - log_d("host: %s port: %d url: %s", _host.c_str(), _port, _uri.c_str()); + log_d("protocol: %s, host: %s port: %d url: %s", _protocol.c_str(), _host.c_str(), _port, _uri.c_str()); return true; } @@ -376,19 +382,19 @@ void HTTPClient::disconnect(bool preserveClient) } if(_reuse && _canReuse) { - log_d("tcp keep open for reuse\n"); + log_d("tcp keep open for reuse"); } else { - log_d("tcp stop\n"); + log_d("tcp stop"); _client->stop(); if(!preserveClient) { _client = nullptr; - } #ifdef HTTPCLIENT_1_1_COMPATIBLE - if(_tcpDeprecated) { - _transportTraits.reset(nullptr); - _tcpDeprecated.reset(nullptr); - } + if(_tcpDeprecated) { + _transportTraits.reset(nullptr); + _tcpDeprecated.reset(nullptr); + } #endif + } } } else { log_d("tcp is closed\n");