Commit 1083b64c authored by jan.koester's avatar jan.koester
Browse files

test

parent aab9b0ea
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -1507,6 +1507,22 @@ void libhttppp::HttpEvent::RequestEvent(netplus::con &curcon,const int tid,ULONG
            }
        }

        // h2c: detect HTTP/2 client connection preface on cleartext connections
        // (e.g. behind reverse proxies like Envoy that speak h2c upstream)
        if (cureq.RecvData.size() >= H2_CLIENT_PREFACE_LEN &&
            std::memcmp(cureq.RecvData.data(), H2_CLIENT_PREFACE, H2_CLIENT_PREFACE_LEN) == 0) {
            static const netplus::ssl::FramingCallback nullCb;
            Http2RequestEvent(curcon, tid, args, "h2c", nullCb);
            return;
        }

        // h2c continuation: connection already identified as HTTP/2 (cleartext)
        if (cureq._httpProtocol == 1) {
            static const netplus::ssl::FramingCallback nullCb;
            Http2RequestEvent(curcon, tid, args, "h2c", nullCb);
            return;
        }

REQUESTHANDLING:
        // Guard: only loop for HTTP/1.x; HTTP/2 and HTTP/3 parse() always
        // returns 1, which would cause an infinite loop here.