From 70779199f3cb163c3199d109a544187b6507d839 Mon Sep 17 00:00:00 2001 From: Stefan Eissing Date: Thu, 22 May 2025 15:09:58 +0200 Subject: [PATCH] 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 --- lib/cf-h1-proxy.c | 3 +-- lib/cf-h2-proxy.c | 5 ++++- lib/cf-haproxy.c | 1 - lib/cf-https-connect.c | 1 - lib/cf-socket.c | 17 ----------------- lib/cfilters.c | 41 ++++++++++++++++------------------------- lib/cfilters.h | 37 +++++++++++++------------------------ lib/connect.c | 8 +++----- lib/curl_sasl.c | 12 ++++++------ lib/http2.c | 1 - lib/http_proxy.c | 29 ++++++++++++++--------------- lib/http_proxy.h | 8 +++----- lib/socks.c | 31 ++++++++++++++++--------------- lib/vquic/curl_msh3.c | 1 - lib/vquic/curl_ngtcp2.c | 1 - lib/vquic/curl_osslq.c | 1 - lib/vquic/curl_quiche.c | 1 - lib/vtls/vtls.c | 2 -- tests/unit/unit2600.c | 1 - 19 files changed, 76 insertions(+), 125 deletions(-) diff --git a/lib/cf-h1-proxy.c b/lib/cf-h1-proxy.c index d2bf3caddd..38d6d14a9d 100644 --- a/lib/cf-h1-proxy.c +++ b/lib/cf-h1-proxy.c @@ -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, diff --git a/lib/cf-h2-proxy.c b/lib/cf-h2-proxy.c index 6258c18765..4aa74f6c92 100644 --- a/lib/cf-h2-proxy.c +++ b/lib/cf-h2-proxy.c @@ -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, diff --git a/lib/cf-haproxy.c b/lib/cf-haproxy.c index cb0d0ff38f..6183ca2c13 100644 --- a/lib/cf-haproxy.c +++ b/lib/cf-haproxy.c @@ -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, diff --git a/lib/cf-https-connect.c b/lib/cf-https-connect.c index 00c26d47c8..8c3e01e6d8 100644 --- a/lib/cf-https-connect.c +++ b/lib/cf-https-connect.c @@ -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, diff --git a/lib/cf-socket.c b/lib/cf-socket.c index 6bc0976e96..87e7dd412f 100644 --- a/lib/cf-socket.c +++ b/lib/cf-socket.c @@ -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, diff --git a/lib/cfilters.c b/lib/cfilters.c index ffe34765ee..3d1fb61810 100644 --- a/lib/cfilters.c +++ b/lib/cfilters.c @@ -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; } } diff --git a/lib/cfilters.h b/lib/cfilters.h index 6826338109..97d0d5bf69 100644 --- a/lib/cfilters.h +++ b/lib/cfilters.h @@ -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 diff --git a/lib/connect.c b/lib/connect.c index 589f8ebfbb..b6f99f1f84 100644 --- a/lib/connect.c +++ b/lib/connect.c @@ -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, diff --git a/lib/curl_sasl.c b/lib/curl_sasl.c index f711803904..766de44b85 100644 --- a/lib/curl_sasl.c +++ b/lib/curl_sasl.c @@ -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; diff --git a/lib/http2.c b/lib/http2.c index 58df5fac6e..9a94fb1713 100644 --- a/lib/http2.c +++ b/lib/http2.c @@ -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, diff --git a/lib/http_proxy.c b/lib/http_proxy.c index 3df6329c06..9a6daa5e0f 100644 --- a/lib/http_proxy.c +++ b/lib/http_proxy.c @@ -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, diff --git a/lib/http_proxy.h b/lib/http_proxy.h index 2e91ff2037..33204203dd 100644 --- a/lib/http_proxy.h +++ b/lib/http_proxy.h @@ -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); diff --git a/lib/socks.c b/lib/socks.c index c06b8f5fc5..10a307dc5c 100644 --- a/lib/socks.c +++ b/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, diff --git a/lib/vquic/curl_msh3.c b/lib/vquic/curl_msh3.c index 543902dea1..a309fa74ff 100644 --- a/lib/vquic/curl_msh3.c +++ b/lib/vquic/curl_msh3.c @@ -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, diff --git a/lib/vquic/curl_ngtcp2.c b/lib/vquic/curl_ngtcp2.c index 444e9ca2bf..320f619c66 100644 --- a/lib/vquic/curl_ngtcp2.c +++ b/lib/vquic/curl_ngtcp2.c @@ -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, diff --git a/lib/vquic/curl_osslq.c b/lib/vquic/curl_osslq.c index aa93ae70e2..484ab61865 100644 --- a/lib/vquic/curl_osslq.c +++ b/lib/vquic/curl_osslq.c @@ -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, diff --git a/lib/vquic/curl_quiche.c b/lib/vquic/curl_quiche.c index 6b9ab2a0ec..33d295b836 100644 --- a/lib/vquic/curl_quiche.c +++ b/lib/vquic/curl_quiche.c @@ -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, diff --git a/lib/vtls/vtls.c b/lib/vtls/vtls.c index 16b291cb45..53fc329d07 100644 --- a/lib/vtls/vtls.c +++ b/lib/vtls/vtls.c @@ -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, diff --git a/tests/unit/unit2600.c b/tests/unit/unit2600.c index 90b235aa49..cc2c5922b5 100644 --- a/tests/unit/unit2600.c +++ b/tests/unit/unit2600.c @@ -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, -- 2.47.2