Commit 5cc1c86c authored by jan.koester's avatar jan.koester
Browse files

fixes

parent f0fe2003
Loading
Loading
Loading
Loading
+0 −17
Original line number Diff line number Diff line
@@ -699,10 +699,6 @@ void libhttppp::HttpEvent::Http3StreamEvent(netplus::socket *sock,
                                            uint64_t stream_id,
                                            const std::vector<uint8_t> &data,
                                            bool fin) {
    std::cerr << "[H3-STREAM] stream_id=" << stream_id
              << " data_size=" << data.size()
              << " fin=" << fin << std::endl;

    if (data.empty() && !fin) {
        return;
    }
@@ -751,31 +747,22 @@ void libhttppp::HttpEvent::Http3StreamEvent(netplus::socket *sock,
        size_t bytes = 0;
        uint64_t frame_type = h3DecodeVarInt(completeData.data() + offset, completeData.size() - offset, bytes);
        if (bytes == 0) {
            std::cerr << "[H3-FRAME] frame#" << frame_idx << " type varint decode failed at offset=" << offset << std::endl;
            break;
        }
        offset += bytes;
        if (offset >= completeData.size()) {
            std::cerr << "[H3-FRAME] frame#" << frame_idx << " offset=" << offset << " >= size=" << completeData.size() << " after type" << std::endl;
            break;
        }

        uint64_t frame_len = h3DecodeVarInt(completeData.data() + offset, completeData.size() - offset, bytes);
        if (bytes == 0) {
            std::cerr << "[H3-FRAME] frame#" << frame_idx << " len varint decode failed at offset=" << offset << std::endl;
            break;
        }
        offset += bytes;
        if (offset + frame_len > completeData.size()) {
            std::cerr << "[H3-FRAME] frame#" << frame_idx << " type=0x" << std::hex << frame_type << std::dec
                      << " len=" << frame_len << " offset=" << offset
                      << " exceeds size=" << completeData.size() << std::endl;
            break;
        }

        std::cerr << "[H3-FRAME] frame#" << frame_idx << " type=0x" << std::hex << frame_type << std::dec
                  << " len=" << frame_len << " offset=" << offset << std::endl;

        if (frame_type == 0x01) { // HEADERS frame
            headersPayload.assign(completeData.data() + offset, completeData.data() + offset + frame_len);
        } else if (frame_type == 0x00) { // DATA frame
@@ -787,13 +774,9 @@ void libhttppp::HttpEvent::Http3StreamEvent(netplus::socket *sock,
    }

    if (headersPayload.empty()) {
        std::cerr << "[H3-STREAM] No HEADERS frame found in " << completeData.size() << " bytes" << std::endl;
        return;
    }

    std::cerr << "[H3-STREAM] HEADERS=" << headersPayload.size()
              << " BODY=" << bodyData.size() << std::endl;

    // Decode QPACK headers
    auto decoded = libhttppp::qpack::Decoder::decode(
        headersPayload.data(), headersPayload.size());