10#ifndef PROTO_FUZZER_HTTP3_MOCK_SERVER_H_
11#define PROTO_FUZZER_HTTP3_MOCK_SERVER_H_
19namespace proto_fuzzer {
21class Http3MockServerImpl;
38 explicit Http3MockServer(curl::fuzzer::proto::TlsCertificateChainProfile certificate_chain);
47 void Install(CURL* easy)
override;
58 curl_socket_t
HandleOpenSocket(curlsocktype purpose,
struct curl_sockaddr* address)
override;
62 void RunLoop(CURLM* multi, CURL* easy,
const curl::fuzzer::proto::Scenario& scenario)
override;
65 std::unique_ptr<Http3MockServerImpl> impl_;
Http3MockServer()
Construct a peer with the default checked-in EC certificate.
void RunLoop(CURLM *multi, CURL *easy, const curl::fuzzer::proto::Scenario &scenario) override
Alternate nonblocking curl and QUIC server turns under fixed operation and idle budgets.
bool request_headers_received() const
void ObserveState() override
Retain protocol outcomes in coverage and introspector builds.
void Install(CURL *easy) override
Install UDP socket callbacks, the local trust anchor, and HTTP/3-only negotiation on an easy handle.
std::size_t executed_action_count() const
curl_socket_t HandleOpenSocket(curlsocktype purpose, struct curl_sockaddr *address) override
Create curl's real UDP descriptor and rewrite its destination to the private loopback QUIC listener.
bool handshake_complete() const
SocketSetupDisposition GetSocketSetupDisposition(curl_socket_t curlfd, curlsocktype purpose) const override
HTTP/3 returns an unconnected UDP descriptor, so curl must perform its normal socket setup before usi...
std::uint16_t server_port() const
MockServerBase — common plumbing shared by every protocol-specific mock server.
SocketSetupDisposition
Tell curl whether an application-provided socket still needs its normal connect/options setup or alre...