10#ifndef PROTO_FUZZER_TELNET_MOCK_SERVER_H_
11#define PROTO_FUZZER_TELNET_MOCK_SERVER_H_
15#include "curl_fuzzer.pb.h"
18namespace proto_fuzzer {
39 struct curl_sockaddr* address =
nullptr)
override;
40 void RunLoop(CURLM* multi, CURL* easy,
const curl::fuzzer::proto::Scenario& scenario)
override;
43 static void DrainBeforeUploadRead(
void* userdata);
45 const curl::fuzzer::proto::Scenario* scenario_;
Builds HTTP headers or TELNET options, MIME state, and upload callbacks whose storage or userdata lib...
curl_socket_t HandleOpenSocket(curlsocktype purpose=CURLSOCKTYPE_IPCXN, struct curl_sockaddr *address=nullptr) override
Create one socketpair, preload every raw response fragment curl can observe, then half-close the peer...
void ConfigureRequestData(ScenarioRequestData *request_data) override
Attach the synchronous peer drain to TELNET's upload callback.
void RunLoop(CURLM *multi, CURL *easy, const curl::fuzzer::proto::Scenario &scenario) override
Drive a small number of non-waiting multi transitions.
TelnetMockServer()
Start without a borrowed scenario.
~TelnetMockServer() override
The base owns and closes the server half after curl releases its client fd.
MockServerBase — common plumbing shared by every protocol-specific mock server.