10#ifndef PROTO_FUZZER_H2_ORIGIN_MOCK_SERVER_H_
11#define PROTO_FUZZER_H2_ORIGIN_MOCK_SERVER_H_
21namespace proto_fuzzer {
30 curl::fuzzer::proto::TlsCertificateChainProfile certificate_chain =
31 curl::fuzzer::proto::TLS_CERTIFICATE_CHAIN_DEFAULT_EC,
32 curl::fuzzer::proto::TlsGroupProfile group_profile = curl::fuzzer::proto::TLS_GROUP_X25519);
35 void Install(CURL* easy)
override;
43 void RunLoop(CURLM* multi, CURL* easy,
const curl::fuzzer::proto::Scenario& scenario)
override;
H2OriginMockServer(curl::fuzzer::proto::TlsCertificateChainProfile certificate_chain=curl::fuzzer::proto::TLS_CERTIFICATE_CHAIN_DEFAULT_EC, curl::fuzzer::proto::TlsGroupProfile group_profile=curl::fuzzer::proto::TLS_GROUP_X25519)
Construct an HTTP/2 TLS peer with the selected certificate chain.
const H2Runtime & runtime() const
Expose shared protocol observations without allowing carrier state changes.
void RunLoop(CURLM *multi, CURL *easy, const curl::fuzzer::proto::Scenario &scenario) override
Run the raw HTTP/2 response driver and probe server push and upkeep APIs.
void HandleDetachedMulti(CurlMultiPtr multi) override
Keep the connection cache alive until this mock is destroyed, after the caller has cleaned the detach...
std::size_t cleaned_push_count() const
void Install(CURL *easy) override
Keep transport selection out of the mutation grammar.
std::unique_ptr< MockConnection > CreateConnection() override
Attach the reusable H2 client-frame tracker after TLS decryption.
Protocol state shared by TLS and plaintext HTTP/2 origin peers.
TlsMockServer()
Build one reusable in-process server context per fuzz iteration.
std::unique_ptr< CURLM, CurlMultiDeleter > CurlMultiPtr
Unique ownership of a CURL multi handle.
Shared HTTP/2 plan, push, and upkeep behavior for origin peers.
Reusable TLS transport for structured in-process protocol peers.