Loading src/http.cpp +4 −4 Original line number Diff line number Diff line Loading @@ -2797,7 +2797,7 @@ const std::vector<char> libhttppp::HttpClient::Get(libhttppp::HttpRequest &nreq, // Handle redirects (301, 302, 303, 307, 308) if (_lastStatusCode >= 301 && _lastStatusCode <= 308 && _lastStatusCode != 304 && _lastStatusCode != 305 && !_lastLocation.empty() && redirects < MAX_REDIRECTS) && !_lastLocation.empty() && redirects < _maxRedirects) { ++redirects; // Update request URL for relative or absolute redirect Loading Loading @@ -2869,7 +2869,7 @@ const std::vector<char> libhttppp::HttpClient::Post(libhttppp::HttpRequest &nreq // Handle further redirects if (_lastStatusCode >= 301 && _lastStatusCode <= 308 && _lastStatusCode != 304 && _lastStatusCode != 305 && !_lastLocation.empty() && redirects < MAX_REDIRECTS) && !_lastLocation.empty() && redirects < _maxRedirects) { ++redirects; if (_lastLocation.find("://") != std::string::npos) { Loading Loading @@ -2917,7 +2917,7 @@ const std::vector<char> libhttppp::HttpClient::Post(libhttppp::HttpRequest &nreq // Handle redirects (301, 302, 303, 307, 308) if (_lastStatusCode >= 301 && _lastStatusCode <= 308 && _lastStatusCode != 304 && _lastStatusCode != 305 && !_lastLocation.empty() && redirects < MAX_REDIRECTS) && !_lastLocation.empty() && redirects < _maxRedirects) { ++redirects; if (_lastLocation.find("://") != std::string::npos) { Loading Loading @@ -3057,7 +3057,7 @@ const std::vector<char> libhttppp::HttpClient::Put(libhttppp::HttpRequest &nreq, if (_lastStatusCode >= 301 && _lastStatusCode <= 308 && _lastStatusCode != 304 && _lastStatusCode != 305 && !_lastLocation.empty() && redirects < MAX_REDIRECTS) && !_lastLocation.empty() && redirects < _maxRedirects) { ++redirects; if (_lastLocation.find("://") != std::string::npos) { Loading src/http.h +11 −1 Original line number Diff line number Diff line Loading @@ -117,11 +117,20 @@ namespace libhttppp { // Returns true if readable, false on timeout. bool waitReadable(int timeout_ms); // Override the maximum number of redirects to follow (default: 5). // Set to 0 to disable automatic redirect following. void setMaxRedirects(int max) { _maxRedirects = max; } // Returns the HTTP status code from the last response. int lastStatusCode() const { return _lastStatusCode; } // Drop the current connection so the next request opens a fresh one. void resetConnection(); // Shared TLS session cache — enables abbreviated TLS 1.2 handshakes // across reconnects to the same host. One cache per process. static netplus::TlsSessionCache& tlsSessionCache(); private: void resetConnection(); void _ensureConnected(); bool tryHttp3First(); int readchunk(const char *data,int datasize,int &pos); Loading Loading @@ -188,6 +197,7 @@ namespace libhttppp { int _lastStatusCode = 0; std::string _lastLocation; static constexpr int MAX_REDIRECTS = 5; int _maxRedirects = MAX_REDIRECTS; }; Loading Loading
src/http.cpp +4 −4 Original line number Diff line number Diff line Loading @@ -2797,7 +2797,7 @@ const std::vector<char> libhttppp::HttpClient::Get(libhttppp::HttpRequest &nreq, // Handle redirects (301, 302, 303, 307, 308) if (_lastStatusCode >= 301 && _lastStatusCode <= 308 && _lastStatusCode != 304 && _lastStatusCode != 305 && !_lastLocation.empty() && redirects < MAX_REDIRECTS) && !_lastLocation.empty() && redirects < _maxRedirects) { ++redirects; // Update request URL for relative or absolute redirect Loading Loading @@ -2869,7 +2869,7 @@ const std::vector<char> libhttppp::HttpClient::Post(libhttppp::HttpRequest &nreq // Handle further redirects if (_lastStatusCode >= 301 && _lastStatusCode <= 308 && _lastStatusCode != 304 && _lastStatusCode != 305 && !_lastLocation.empty() && redirects < MAX_REDIRECTS) && !_lastLocation.empty() && redirects < _maxRedirects) { ++redirects; if (_lastLocation.find("://") != std::string::npos) { Loading Loading @@ -2917,7 +2917,7 @@ const std::vector<char> libhttppp::HttpClient::Post(libhttppp::HttpRequest &nreq // Handle redirects (301, 302, 303, 307, 308) if (_lastStatusCode >= 301 && _lastStatusCode <= 308 && _lastStatusCode != 304 && _lastStatusCode != 305 && !_lastLocation.empty() && redirects < MAX_REDIRECTS) && !_lastLocation.empty() && redirects < _maxRedirects) { ++redirects; if (_lastLocation.find("://") != std::string::npos) { Loading Loading @@ -3057,7 +3057,7 @@ const std::vector<char> libhttppp::HttpClient::Put(libhttppp::HttpRequest &nreq, if (_lastStatusCode >= 301 && _lastStatusCode <= 308 && _lastStatusCode != 304 && _lastStatusCode != 305 && !_lastLocation.empty() && redirects < MAX_REDIRECTS) && !_lastLocation.empty() && redirects < _maxRedirects) { ++redirects; if (_lastLocation.find("://") != std::string::npos) { Loading
src/http.h +11 −1 Original line number Diff line number Diff line Loading @@ -117,11 +117,20 @@ namespace libhttppp { // Returns true if readable, false on timeout. bool waitReadable(int timeout_ms); // Override the maximum number of redirects to follow (default: 5). // Set to 0 to disable automatic redirect following. void setMaxRedirects(int max) { _maxRedirects = max; } // Returns the HTTP status code from the last response. int lastStatusCode() const { return _lastStatusCode; } // Drop the current connection so the next request opens a fresh one. void resetConnection(); // Shared TLS session cache — enables abbreviated TLS 1.2 handshakes // across reconnects to the same host. One cache per process. static netplus::TlsSessionCache& tlsSessionCache(); private: void resetConnection(); void _ensureConnected(); bool tryHttp3First(); int readchunk(const char *data,int datasize,int &pos); Loading Loading @@ -188,6 +197,7 @@ namespace libhttppp { int _lastStatusCode = 0; std::string _lastLocation; static constexpr int MAX_REDIRECTS = 5; int _maxRedirects = MAX_REDIRECTS; }; Loading