Commit 97d72fb9 authored by jan.koester's avatar jan.koester
Browse files

test

parent 1449b0ee
Loading
Loading
Loading
Loading
+23 −1
Original line number Diff line number Diff line
@@ -2825,6 +2825,7 @@ const std::vector<char> libhttppp::HttpClient::Post(libhttppp::HttpRequest &nreq
                                                    const std::vector<char> &post, size_t maxTries)
{
    size_t tries = 0;
    int redirects = 0;
    for (;;) {
        try {
            // Reuse existing connection if possible
@@ -2866,7 +2867,28 @@ const std::vector<char> libhttppp::HttpClient::Post(libhttppp::HttpRequest &nreq
                _sendAll(combined.data(), combined.size());
            }

            return _h1ReadResponse("POST");
            auto ret = _h1ReadResponse("POST");

            // Handle redirects (301, 302, 303, 307, 308)
            if (_lastStatusCode >= 301 && _lastStatusCode <= 308
                && _lastStatusCode != 304 && _lastStatusCode != 305
                && !_lastLocation.empty() && redirects < MAX_REDIRECTS)
            {
                ++redirects;
                if (_lastLocation.find("://") != std::string::npos) {
                    _url = HttpUrl(_lastLocation);
                    resetConnection();
                }
                nreq.setRequestURL(_lastLocation.find("://") != std::string::npos
                    ? _url.getPath() : _lastLocation);
                // 303: change to GET (RFC 7231). 307/308: preserve POST.
                if (_lastStatusCode == 303) {
                    nreq.setRequestType(GETREQUEST);
                }
                continue;
            }

            return ret;

        } catch (netplus::NetException &e) {
            ++tries;