Commit 083713af authored by jan.koester's avatar jan.koester
Browse files

test

parent 164d2a5f
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -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
@@ -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) {
@@ -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) {
@@ -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) {
+11 −1
Original line number Diff line number Diff line
@@ -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);
@@ -188,6 +197,7 @@ namespace libhttppp {
      int _lastStatusCode = 0;
      std::string _lastLocation;
      static constexpr int MAX_REDIRECTS = 5;
      int _maxRedirects = MAX_REDIRECTS;
  };