mirror of
https://github.com/curl/curl.git
synced 2026-08-04 08:29:59 +03:00
cf: replace the method get_host with query
Connection filters had a method `get_host()` which had not really been documented. Since then, the cf had the `query()` method added. Replace the separate get_host with query. Add `CF_QUERY_HOST_PORT` as query to connection filters to retrieve which remote hostname and port the filter (or its sub-filter) is talking to. The query is implemented by HTTP and SOCKS filters, all others pass it through. Add `Curl_conn_get_current_host()` to retrieve the remote host and port for a connection. During connect, this will return the host the connection is talking to right now. Before/After connect, this will return `conn->host.name`. This is used by SASL authentication. Closes #17419
This commit is contained in:
parent
779937f840
commit
70779199f3
19 changed files with 76 additions and 125 deletions
|
|
@ -740,7 +740,6 @@ struct Curl_cftype Curl_cft_h1_proxy = {
|
|||
cf_h1_proxy_connect,
|
||||
cf_h1_proxy_close,
|
||||
Curl_cf_def_shutdown,
|
||||
Curl_cf_http_proxy_get_host,
|
||||
cf_h1_proxy_adjust_pollset,
|
||||
Curl_cf_def_data_pending,
|
||||
Curl_cf_def_send,
|
||||
|
|
@ -748,7 +747,7 @@ struct Curl_cftype Curl_cft_h1_proxy = {
|
|||
Curl_cf_def_cntrl,
|
||||
Curl_cf_def_conn_is_alive,
|
||||
Curl_cf_def_conn_keep_alive,
|
||||
Curl_cf_def_query,
|
||||
Curl_cf_http_proxy_query,
|
||||
};
|
||||
|
||||
CURLcode Curl_cf_h1_proxy_insert_after(struct Curl_cfilter *cf_at,
|
||||
|
|
|
|||
|
|
@ -1557,6 +1557,10 @@ static CURLcode cf_h2_proxy_query(struct Curl_cfilter *cf,
|
|||
struct cf_h2_proxy_ctx *ctx = cf->ctx;
|
||||
|
||||
switch(query) {
|
||||
case CF_QUERY_HOST_PORT:
|
||||
*pres1 = (int)cf->conn->http_proxy.port;
|
||||
*((const char **)pres2) = cf->conn->http_proxy.host.name;
|
||||
return CURLE_OK;
|
||||
case CF_QUERY_NEED_FLUSH: {
|
||||
if(!Curl_bufq_is_empty(&ctx->outbufq) ||
|
||||
!Curl_bufq_is_empty(&ctx->tunnel.sendbuf)) {
|
||||
|
|
@ -1604,7 +1608,6 @@ struct Curl_cftype Curl_cft_h2_proxy = {
|
|||
cf_h2_proxy_connect,
|
||||
cf_h2_proxy_close,
|
||||
cf_h2_proxy_shutdown,
|
||||
Curl_cf_http_proxy_get_host,
|
||||
cf_h2_proxy_adjust_pollset,
|
||||
cf_h2_proxy_data_pending,
|
||||
cf_h2_proxy_send,
|
||||
|
|
|
|||
|
|
@ -197,7 +197,6 @@ struct Curl_cftype Curl_cft_haproxy = {
|
|||
cf_haproxy_connect,
|
||||
cf_haproxy_close,
|
||||
Curl_cf_def_shutdown,
|
||||
Curl_cf_def_get_host,
|
||||
cf_haproxy_adjust_pollset,
|
||||
Curl_cf_def_data_pending,
|
||||
Curl_cf_def_send,
|
||||
|
|
|
|||
|
|
@ -562,7 +562,6 @@ struct Curl_cftype Curl_cft_http_connect = {
|
|||
cf_hc_connect,
|
||||
cf_hc_close,
|
||||
cf_hc_shutdown,
|
||||
Curl_cf_def_get_host,
|
||||
cf_hc_adjust_pollset,
|
||||
cf_hc_data_pending,
|
||||
Curl_cf_def_send,
|
||||
|
|
|
|||
|
|
@ -1375,19 +1375,6 @@ out:
|
|||
return result;
|
||||
}
|
||||
|
||||
static void cf_socket_get_host(struct Curl_cfilter *cf,
|
||||
struct Curl_easy *data,
|
||||
const char **phost,
|
||||
const char **pdisplay_host,
|
||||
int *pport)
|
||||
{
|
||||
struct cf_socket_ctx *ctx = cf->ctx;
|
||||
(void)data;
|
||||
*phost = cf->conn->host.name;
|
||||
*pdisplay_host = cf->conn->host.dispname;
|
||||
*pport = ctx->ip.remote_port;
|
||||
}
|
||||
|
||||
static void cf_socket_adjust_pollset(struct Curl_cfilter *cf,
|
||||
struct Curl_easy *data,
|
||||
struct easy_pollset *ps)
|
||||
|
|
@ -1762,7 +1749,6 @@ struct Curl_cftype Curl_cft_tcp = {
|
|||
cf_tcp_connect,
|
||||
cf_socket_close,
|
||||
cf_socket_shutdown,
|
||||
cf_socket_get_host,
|
||||
cf_socket_adjust_pollset,
|
||||
cf_socket_data_pending,
|
||||
cf_socket_send,
|
||||
|
|
@ -1917,7 +1903,6 @@ struct Curl_cftype Curl_cft_udp = {
|
|||
cf_udp_connect,
|
||||
cf_socket_close,
|
||||
cf_socket_shutdown,
|
||||
cf_socket_get_host,
|
||||
cf_socket_adjust_pollset,
|
||||
cf_socket_data_pending,
|
||||
cf_socket_send,
|
||||
|
|
@ -1972,7 +1957,6 @@ struct Curl_cftype Curl_cft_unix = {
|
|||
cf_tcp_connect,
|
||||
cf_socket_close,
|
||||
cf_socket_shutdown,
|
||||
cf_socket_get_host,
|
||||
cf_socket_adjust_pollset,
|
||||
cf_socket_data_pending,
|
||||
cf_socket_send,
|
||||
|
|
@ -2193,7 +2177,6 @@ struct Curl_cftype Curl_cft_tcp_accept = {
|
|||
cf_tcp_accept_connect,
|
||||
cf_socket_close,
|
||||
cf_socket_shutdown,
|
||||
cf_socket_get_host,
|
||||
cf_socket_adjust_pollset,
|
||||
cf_socket_data_pending,
|
||||
cf_socket_send,
|
||||
|
|
|
|||
|
|
@ -67,19 +67,6 @@ CURLcode Curl_cf_def_shutdown(struct Curl_cfilter *cf,
|
|||
static void conn_report_connect_stats(struct Curl_easy *data,
|
||||
struct connectdata *conn);
|
||||
|
||||
void Curl_cf_def_get_host(struct Curl_cfilter *cf, struct Curl_easy *data,
|
||||
const char **phost, const char **pdisplay_host,
|
||||
int *pport)
|
||||
{
|
||||
if(cf->next)
|
||||
cf->next->cft->get_host(cf->next, data, phost, pdisplay_host, pport);
|
||||
else {
|
||||
*phost = cf->conn->host.name;
|
||||
*pdisplay_host = cf->conn->host.dispname;
|
||||
*pport = cf->conn->primary.remote_port;
|
||||
}
|
||||
}
|
||||
|
||||
void Curl_cf_def_adjust_pollset(struct Curl_cfilter *cf,
|
||||
struct Curl_easy *data,
|
||||
struct easy_pollset *ps)
|
||||
|
|
@ -670,24 +657,28 @@ int Curl_conn_cf_poll(struct Curl_cfilter *cf,
|
|||
return Curl_poll(pfds, npfds, timeout_ms);
|
||||
}
|
||||
|
||||
void Curl_conn_get_host(struct Curl_easy *data, int sockindex,
|
||||
const char **phost, const char **pdisplay_host,
|
||||
int *pport)
|
||||
void Curl_conn_get_current_host(struct Curl_easy *data, int sockindex,
|
||||
const char **phost, int *pport)
|
||||
{
|
||||
struct Curl_cfilter *cf;
|
||||
struct Curl_cfilter *cf, *cf_proxy = NULL;
|
||||
|
||||
DEBUGASSERT(data->conn);
|
||||
cf = data->conn->cfilter[sockindex];
|
||||
if(cf) {
|
||||
cf->cft->get_host(cf, data, phost, pdisplay_host, pport);
|
||||
/* Find the "lowest" tunneling proxy filter that has not connected yet. */
|
||||
while(cf && !cf->connected) {
|
||||
if((cf->cft->flags & (CF_TYPE_IP_CONNECT|CF_TYPE_PROXY)) ==
|
||||
(CF_TYPE_IP_CONNECT|CF_TYPE_PROXY))
|
||||
cf_proxy = cf;
|
||||
cf = cf->next;
|
||||
}
|
||||
else {
|
||||
/* Some filter ask during shutdown for this, mainly for debugging
|
||||
* purposes. We hand out the defaults, however this is not always
|
||||
* accurate, as the connection might be tunneled, etc. But all that
|
||||
* state is already gone here. */
|
||||
/* cf_proxy (!= NULL) is not connected yet. It is talking
|
||||
* to an interim host and any authentication or other things apply
|
||||
* to this interim host and port. */
|
||||
if(!cf_proxy || cf_proxy->cft->query(cf_proxy, data, CF_QUERY_HOST_PORT,
|
||||
pport, CURL_UNCONST(phost))) {
|
||||
/* Everything connected or query unsuccessful, the overall
|
||||
* connection's destination is the answer */
|
||||
*phost = data->conn->host.name;
|
||||
*pdisplay_host = data->conn->host.dispname;
|
||||
*pport = data->conn->remote_port;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -53,23 +53,6 @@ typedef CURLcode Curl_cft_connect(struct Curl_cfilter *cf,
|
|||
struct Curl_easy *data,
|
||||
bool *done);
|
||||
|
||||
/* Return the hostname and port the connection goes to.
|
||||
* This may change with the connection state of filters when tunneling
|
||||
* is involved.
|
||||
* @param cf the filter to ask
|
||||
* @param data the easy handle currently active
|
||||
* @param phost on return, points to the relevant, real hostname.
|
||||
* this is owned by the connection.
|
||||
* @param pdisplay_host on return, points to the printable hostname.
|
||||
* this is owned by the connection.
|
||||
* @param pport on return, contains the port number
|
||||
*/
|
||||
typedef void Curl_cft_get_host(struct Curl_cfilter *cf,
|
||||
struct Curl_easy *data,
|
||||
const char **phost,
|
||||
const char **pdisplay_host,
|
||||
int *pport);
|
||||
|
||||
struct easy_pollset;
|
||||
|
||||
/* Passing in an easy_pollset for monitoring of sockets, let
|
||||
|
|
@ -166,6 +149,7 @@ typedef CURLcode Curl_cft_cntrl(struct Curl_cfilter *cf,
|
|||
* - CF_QUERY_NEED_FLUSH: TRUE iff any of the filters have unsent data
|
||||
* - CF_QUERY_IP_INFO: res1 says if connection used IPv6, res2 is the
|
||||
* ip quadruple
|
||||
* - CF_QUERY_HOST_PORT: the remote hostname and port a filter talks to
|
||||
*/
|
||||
/* query res1 res2 */
|
||||
#define CF_QUERY_MAX_CONCURRENT 1 /* number - */
|
||||
|
|
@ -180,6 +164,7 @@ typedef CURLcode Curl_cft_cntrl(struct Curl_cfilter *cf,
|
|||
/* pass in a `const struct Curl_sockaddr_ex **` as `pres2`. Gets set
|
||||
* to NULL when not connected. */
|
||||
#define CF_QUERY_REMOTE_ADDR 10 /* - `Curl_sockaddr_ex *` */
|
||||
#define CF_QUERY_HOST_PORT 11 /* port const char * */
|
||||
|
||||
/**
|
||||
* Query the cfilter for properties. Filters ignorant of a query will
|
||||
|
|
@ -216,7 +201,6 @@ struct Curl_cftype {
|
|||
Curl_cft_connect *do_connect; /* establish connection */
|
||||
Curl_cft_close *do_close; /* close conn */
|
||||
Curl_cft_shutdown *do_shutdown; /* shutdown conn */
|
||||
Curl_cft_get_host *get_host; /* host filter talks to */
|
||||
Curl_cft_adjust_pollset *adjust_pollset; /* adjust transfer poll set */
|
||||
Curl_cft_data_pending *has_data_pending;/* conn has data pending */
|
||||
Curl_cft_send *do_send; /* send data */
|
||||
|
|
@ -244,9 +228,6 @@ void Curl_cf_def_destroy_this(struct Curl_cfilter *cf,
|
|||
|
||||
/* Default implementations for the type functions, implementing pass-through
|
||||
* the filter chain. */
|
||||
void Curl_cf_def_get_host(struct Curl_cfilter *cf, struct Curl_easy *data,
|
||||
const char **phost, const char **pdisplay_host,
|
||||
int *pport);
|
||||
void Curl_cf_def_adjust_pollset(struct Curl_cfilter *cf,
|
||||
struct Curl_easy *data,
|
||||
struct easy_pollset *ps);
|
||||
|
|
@ -541,9 +522,17 @@ CURLcode Curl_conn_keep_alive(struct Curl_easy *data,
|
|||
#ifdef UNITTESTS
|
||||
void Curl_cf_def_close(struct Curl_cfilter *cf, struct Curl_easy *data);
|
||||
#endif
|
||||
void Curl_conn_get_host(struct Curl_easy *data, int sockindex,
|
||||
const char **phost, const char **pdisplay_host,
|
||||
int *pport);
|
||||
|
||||
/**
|
||||
* Get the remote hostname and port that the connection is currently
|
||||
* talking to (or will talk to).
|
||||
* Once connected or before connect starts,
|
||||
* it is `conn->host.name` and `conn->remote_port`.
|
||||
* During connect, when tunneling proxies are involved (http or socks),
|
||||
* it will be the name and port the proxy currently negotiates with.
|
||||
*/
|
||||
void Curl_conn_get_current_host(struct Curl_easy *data, int sockindex,
|
||||
const char **phost, int *pport);
|
||||
|
||||
/**
|
||||
* Get the maximum number of parallel transfers the connection
|
||||
|
|
|
|||
|
|
@ -995,11 +995,11 @@ static CURLcode cf_he_connect(struct Curl_cfilter *cf,
|
|||
struct ip_quadruple ipquad;
|
||||
int is_ipv6;
|
||||
if(!Curl_conn_cf_get_ip_info(cf->next, data, &is_ipv6, &ipquad)) {
|
||||
const char *host, *disphost;
|
||||
const char *host;
|
||||
int port;
|
||||
cf->next->cft->get_host(cf->next, data, &host, &disphost, &port);
|
||||
Curl_conn_get_current_host(data, cf->sockindex, &host, &port);
|
||||
CURL_TRC_CF(data, cf, "Connected to %s (%s) port %u",
|
||||
disphost, ipquad.remote_ip, ipquad.remote_port);
|
||||
host, ipquad.remote_ip, ipquad.remote_port);
|
||||
}
|
||||
}
|
||||
data->info.numconnects++; /* to track the # of connections made */
|
||||
|
|
@ -1136,7 +1136,6 @@ struct Curl_cftype Curl_cft_happy_eyeballs = {
|
|||
cf_he_connect,
|
||||
cf_he_close,
|
||||
cf_he_shutdown,
|
||||
Curl_cf_def_get_host,
|
||||
cf_he_adjust_pollset,
|
||||
cf_he_data_pending,
|
||||
Curl_cf_def_send,
|
||||
|
|
@ -1400,7 +1399,6 @@ struct Curl_cftype Curl_cft_setup = {
|
|||
cf_setup_connect,
|
||||
cf_setup_close,
|
||||
Curl_cf_def_shutdown,
|
||||
Curl_cf_def_get_host,
|
||||
Curl_cf_def_adjust_pollset,
|
||||
Curl_cf_def_data_pending,
|
||||
Curl_cf_def_send,
|
||||
|
|
|
|||
|
|
@ -430,10 +430,10 @@ static bool sasl_choose_ntlm(struct Curl_easy *data, struct sasl_ctx *sctx)
|
|||
const char *service = data->set.str[STRING_SERVICE_NAME] ?
|
||||
data->set.str[STRING_SERVICE_NAME] :
|
||||
sctx->sasl->params->service;
|
||||
const char *hostname, *disp_hostname;
|
||||
const char *hostname;
|
||||
int port;
|
||||
|
||||
Curl_conn_get_host(data, FIRSTSOCKET, &hostname, &disp_hostname, &port);
|
||||
Curl_conn_get_current_host(data, FIRSTSOCKET, &hostname, &port);
|
||||
|
||||
sctx->mech = SASL_MECH_STRING_NTLM;
|
||||
sctx->state1 = SASL_NTLM;
|
||||
|
|
@ -461,9 +461,9 @@ static bool sasl_choose_oauth(struct Curl_easy *data, struct sasl_ctx *sctx)
|
|||
|
||||
if(sctx->user && oauth_bearer &&
|
||||
(sctx->enabledmechs & SASL_MECH_OAUTHBEARER)) {
|
||||
const char *hostname, *disp_hostname;
|
||||
const char *hostname;
|
||||
int port;
|
||||
Curl_conn_get_host(data, FIRSTSOCKET, &hostname, &disp_hostname, &port);
|
||||
Curl_conn_get_current_host(data, FIRSTSOCKET, &hostname, &port);
|
||||
|
||||
sctx->mech = SASL_MECH_STRING_OAUTHBEARER;
|
||||
sctx->state1 = SASL_OAUTH2;
|
||||
|
|
@ -613,7 +613,7 @@ CURLcode Curl_sasl_continue(struct SASL *sasl, struct Curl_easy *data,
|
|||
struct connectdata *conn = data->conn;
|
||||
saslstate newstate = SASL_FINAL;
|
||||
struct bufref resp;
|
||||
const char *hostname, *disp_hostname;
|
||||
const char *hostname;
|
||||
int port;
|
||||
#if defined(USE_KERBEROS5) || defined(USE_NTLM) \
|
||||
|| !defined(CURL_DISABLE_DIGEST_AUTH)
|
||||
|
|
@ -624,7 +624,7 @@ CURLcode Curl_sasl_continue(struct SASL *sasl, struct Curl_easy *data,
|
|||
const char *oauth_bearer = data->set.str[STRING_BEARER];
|
||||
struct bufref serverdata;
|
||||
|
||||
Curl_conn_get_host(data, FIRSTSOCKET, &hostname, &disp_hostname, &port);
|
||||
Curl_conn_get_current_host(data, FIRSTSOCKET, &hostname, &port);
|
||||
Curl_bufref_init(&serverdata);
|
||||
Curl_bufref_init(&resp);
|
||||
*progress = SASL_INPROGRESS;
|
||||
|
|
|
|||
|
|
@ -2819,7 +2819,6 @@ struct Curl_cftype Curl_cft_nghttp2 = {
|
|||
cf_h2_connect,
|
||||
cf_h2_close,
|
||||
cf_h2_shutdown,
|
||||
Curl_cf_def_get_host,
|
||||
cf_h2_adjust_pollset,
|
||||
cf_h2_data_pending,
|
||||
cf_h2_send,
|
||||
|
|
|
|||
|
|
@ -383,21 +383,21 @@ out:
|
|||
return result;
|
||||
}
|
||||
|
||||
void Curl_cf_http_proxy_get_host(struct Curl_cfilter *cf,
|
||||
struct Curl_easy *data,
|
||||
const char **phost,
|
||||
const char **pdisplay_host,
|
||||
int *pport)
|
||||
CURLcode Curl_cf_http_proxy_query(struct Curl_cfilter *cf,
|
||||
struct Curl_easy *data,
|
||||
int query, int *pres1, void *pres2)
|
||||
{
|
||||
(void)data;
|
||||
if(!cf->connected) {
|
||||
*phost = cf->conn->http_proxy.host.name;
|
||||
*pdisplay_host = cf->conn->http_proxy.host.dispname;
|
||||
*pport = (int)cf->conn->http_proxy.port;
|
||||
}
|
||||
else {
|
||||
cf->next->cft->get_host(cf->next, data, phost, pdisplay_host, pport);
|
||||
switch(query) {
|
||||
case CF_QUERY_HOST_PORT:
|
||||
*pres1 = (int)cf->conn->http_proxy.port;
|
||||
*((const char **)pres2) = cf->conn->http_proxy.host.name;
|
||||
return CURLE_OK;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return cf->next ?
|
||||
cf->next->cft->query(cf->next, data, query, pres1, pres2) :
|
||||
CURLE_UNKNOWN_OPTION;
|
||||
}
|
||||
|
||||
static void http_proxy_cf_destroy(struct Curl_cfilter *cf,
|
||||
|
|
@ -443,7 +443,6 @@ struct Curl_cftype Curl_cft_http_proxy = {
|
|||
http_proxy_cf_connect,
|
||||
http_proxy_cf_close,
|
||||
Curl_cf_def_shutdown,
|
||||
Curl_cf_http_proxy_get_host,
|
||||
Curl_cf_def_adjust_pollset,
|
||||
Curl_cf_def_data_pending,
|
||||
Curl_cf_def_send,
|
||||
|
|
@ -451,7 +450,7 @@ struct Curl_cftype Curl_cft_http_proxy = {
|
|||
Curl_cf_def_cntrl,
|
||||
Curl_cf_def_conn_is_alive,
|
||||
Curl_cf_def_conn_keep_alive,
|
||||
Curl_cf_def_query,
|
||||
Curl_cf_http_proxy_query,
|
||||
};
|
||||
|
||||
CURLcode Curl_cf_http_proxy_insert_after(struct Curl_cfilter *cf_at,
|
||||
|
|
|
|||
|
|
@ -48,11 +48,9 @@ CURLcode Curl_http_proxy_create_CONNECT(struct httpreq **preq,
|
|||
/* Default proxy timeout in milliseconds */
|
||||
#define PROXY_TIMEOUT (3600*1000)
|
||||
|
||||
void Curl_cf_http_proxy_get_host(struct Curl_cfilter *cf,
|
||||
struct Curl_easy *data,
|
||||
const char **phost,
|
||||
const char **pdisplay_host,
|
||||
int *pport);
|
||||
CURLcode Curl_cf_http_proxy_query(struct Curl_cfilter *cf,
|
||||
struct Curl_easy *data,
|
||||
int query, int *pres1, void *pres2);
|
||||
|
||||
CURLcode Curl_cf_http_proxy_insert_after(struct Curl_cfilter *cf_at,
|
||||
struct Curl_easy *data);
|
||||
|
|
|
|||
31
lib/socks.c
31
lib/socks.c
|
|
@ -1187,21 +1187,23 @@ static void socks_proxy_cf_destroy(struct Curl_cfilter *cf,
|
|||
socks_proxy_cf_free(cf);
|
||||
}
|
||||
|
||||
static void socks_cf_get_host(struct Curl_cfilter *cf,
|
||||
struct Curl_easy *data,
|
||||
const char **phost,
|
||||
const char **pdisplay_host,
|
||||
int *pport)
|
||||
static CURLcode socks_cf_query(struct Curl_cfilter *cf,
|
||||
struct Curl_easy *data,
|
||||
int query, int *pres1, void *pres2)
|
||||
{
|
||||
(void)data;
|
||||
if(!cf->connected) {
|
||||
*phost = cf->conn->socks_proxy.host.name;
|
||||
*pdisplay_host = cf->conn->http_proxy.host.dispname;
|
||||
*pport = (int)cf->conn->socks_proxy.port;
|
||||
}
|
||||
else {
|
||||
cf->next->cft->get_host(cf->next, data, phost, pdisplay_host, pport);
|
||||
struct socks_state *sx = cf->ctx;
|
||||
|
||||
switch(query) {
|
||||
case CF_QUERY_HOST_PORT:
|
||||
*pres1 = sx->remote_port;
|
||||
*((const char **)pres2) = sx->hostname;
|
||||
return CURLE_OK;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return cf->next ?
|
||||
cf->next->cft->query(cf->next, data, query, pres1, pres2) :
|
||||
CURLE_UNKNOWN_OPTION;
|
||||
}
|
||||
|
||||
struct Curl_cftype Curl_cft_socks_proxy = {
|
||||
|
|
@ -1212,7 +1214,6 @@ struct Curl_cftype Curl_cft_socks_proxy = {
|
|||
socks_proxy_cf_connect,
|
||||
socks_proxy_cf_close,
|
||||
Curl_cf_def_shutdown,
|
||||
socks_cf_get_host,
|
||||
socks_cf_adjust_pollset,
|
||||
Curl_cf_def_data_pending,
|
||||
Curl_cf_def_send,
|
||||
|
|
@ -1220,7 +1221,7 @@ struct Curl_cftype Curl_cft_socks_proxy = {
|
|||
Curl_cf_def_cntrl,
|
||||
Curl_cf_def_conn_is_alive,
|
||||
Curl_cf_def_conn_keep_alive,
|
||||
Curl_cf_def_query,
|
||||
socks_cf_query,
|
||||
};
|
||||
|
||||
CURLcode Curl_cf_socks_proxy_insert_after(struct Curl_cfilter *cf_at,
|
||||
|
|
|
|||
|
|
@ -1022,7 +1022,6 @@ struct Curl_cftype Curl_cft_http3 = {
|
|||
cf_msh3_connect,
|
||||
cf_msh3_close,
|
||||
Curl_cf_def_shutdown,
|
||||
Curl_cf_def_get_host,
|
||||
cf_msh3_adjust_pollset,
|
||||
cf_msh3_data_pending,
|
||||
cf_msh3_send,
|
||||
|
|
|
|||
|
|
@ -2734,7 +2734,6 @@ struct Curl_cftype Curl_cft_http3 = {
|
|||
cf_ngtcp2_connect,
|
||||
cf_ngtcp2_close,
|
||||
cf_ngtcp2_shutdown,
|
||||
Curl_cf_def_get_host,
|
||||
cf_ngtcp2_adjust_pollset,
|
||||
cf_ngtcp2_data_pending,
|
||||
cf_ngtcp2_send,
|
||||
|
|
|
|||
|
|
@ -2379,7 +2379,6 @@ struct Curl_cftype Curl_cft_http3 = {
|
|||
cf_osslq_connect,
|
||||
cf_osslq_close,
|
||||
cf_osslq_shutdown,
|
||||
Curl_cf_def_get_host,
|
||||
cf_osslq_adjust_pollset,
|
||||
cf_osslq_data_pending,
|
||||
cf_osslq_send,
|
||||
|
|
|
|||
|
|
@ -1626,7 +1626,6 @@ struct Curl_cftype Curl_cft_http3 = {
|
|||
cf_quiche_connect,
|
||||
cf_quiche_close,
|
||||
cf_quiche_shutdown,
|
||||
Curl_cf_def_get_host,
|
||||
cf_quiche_adjust_pollset,
|
||||
cf_quiche_data_pending,
|
||||
cf_quiche_send,
|
||||
|
|
|
|||
|
|
@ -1588,7 +1588,6 @@ struct Curl_cftype Curl_cft_ssl = {
|
|||
ssl_cf_connect,
|
||||
ssl_cf_close,
|
||||
ssl_cf_shutdown,
|
||||
Curl_cf_def_get_host,
|
||||
ssl_cf_adjust_pollset,
|
||||
ssl_cf_data_pending,
|
||||
ssl_cf_send,
|
||||
|
|
@ -1609,7 +1608,6 @@ struct Curl_cftype Curl_cft_ssl_proxy = {
|
|||
ssl_cf_connect,
|
||||
ssl_cf_close,
|
||||
ssl_cf_shutdown,
|
||||
Curl_cf_def_get_host,
|
||||
ssl_cf_adjust_pollset,
|
||||
ssl_cf_data_pending,
|
||||
ssl_cf_send,
|
||||
|
|
|
|||
|
|
@ -175,7 +175,6 @@ static CURLcode cf_test_create(struct Curl_cfilter **pcf,
|
|||
cf_test_connect,
|
||||
Curl_cf_def_close,
|
||||
Curl_cf_def_shutdown,
|
||||
Curl_cf_def_get_host,
|
||||
cf_test_adjust_pollset,
|
||||
Curl_cf_def_data_pending,
|
||||
Curl_cf_def_send,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue