Commit c0693adc authored by jan.koester's avatar jan.koester
Browse files

test

parent 87df980e
Loading
Loading
Loading
Loading
+23 −5
Original line number Diff line number Diff line
@@ -374,6 +374,11 @@ const std::vector<char> libhttppp::HttpClient::_h2Request(
            }
        }

        // Add content-length for POST body (servers may rely on it)
        if (postBody && !postBody->empty()) {
            extra.push_back({"content-length", std::to_string(postBody->size()), false});
        }

        std::string hpack_block = hpack::Encoder::encodeRequestHeaders(
            method, path, scheme, auth.str(), extra);

@@ -825,9 +830,14 @@ const std::vector<char> libhttppp::HttpClient::Post(libhttppp::HttpRequest &nreq
        nreq.setHeaderData("host")->push_back(host.str());
        nreq.setRequestType(POSTREQUEST);
        if (nreq.getRequestURL().empty())
            nreq.setRequestURL("/");
            nreq.setRequestURL(_url.getPath());
        if (nreq.getRequestVersion().empty())
            nreq.setRequestVersion(HTTPVERSION(1.1));

        // Debug logging
        std::cerr << "[HttpClient::Post] URL path: '" << nreq.getRequestURL() 
                  << "' | POST body size: " << post.size() << std::endl;

        // IMPORTANT: length as string
        nreq.setHeaderData("content-length")->push_back(std::to_string(post.size()));
        // (optionally) set content-type:
@@ -1076,6 +1086,15 @@ const std::vector<char> libhttppp::HttpClient::Post(libhttppp::HttpRequest &nreq
                ret.insert(ret.end(), buf.data.buf, buf.data.buf + n);
            }
        }

        // Debug: log response
        std::cerr << "[HttpClient::Post] Response size: " << ret.size() << " bytes" << std::endl;
        if (ret.size() < 200) {
            std::cerr << "[HttpClient::Post] Response body: " << std::string(ret.begin(), ret.end()) << std::endl;
        } else {
            std::cerr << "[HttpClient::Post] Response first 200 bytes: " 
                      << std::string(ret.begin(), ret.begin() + 200) << std::endl;
        }
    } catch (netplus::NetException &e) {
        libhttppp::HTTPException ee;
        ee[libhttppp::HTTPException::Error] << e.what();
@@ -2270,7 +2289,7 @@ void libhttppp::HttpRequest::printHeader(std::string &buffer){
  else if(_RequestType==POSTREQUEST)
    buffer="POST ";

  buffer.append(_cachedRequestURL);
  buffer.append(_cachedRequest);
  buffer.append(" ");
  buffer.append(_cachedRequestVersion);
  buffer.append("\r\n");
@@ -2372,7 +2391,6 @@ void libhttppp::HttpRequest::send(const HttpUrl &dest,
    std::string header;
    printHeader(header);

    std::string full = header + _cachedRequest;
    size_t off = 0;

    if(!sock || sock->fd()<0){
@@ -2386,7 +2404,7 @@ void libhttppp::HttpRequest::send(const HttpUrl &dest,
        }
        sock->connect(dest.getHost(),dest.getPort(),true);
    }
    netplus::buffer buf(full.c_str(),full.length());
    netplus::buffer buf(header.c_str(),header.length());
    sock->sendData(buf,0);
}

+6 −0
Original line number Diff line number Diff line
@@ -308,6 +308,12 @@ void libhttppp::HttpEvent::_dispatchH2Stream(HttpRequest &cureq,
        tempreq.RecvData.append(reqBody.data(), reqBody.size());
    }

    // Ensure content-length is set from actual body size (H2 framing
    // provides the length, but application code may rely on the header)
    if (!reqBody.empty() && !tempreq.getHeaderData("content-length")) {
        tempreq.setHeaderData("content-length")->push_back(std::to_string(reqBody.size()));
    }

    // Dispatch to user's virtual RequestEvent
    RequestEvent(tempreq, tid, args);