← Commit list

9325eb5fc4

Stefan Eissing
Stefan Eissing
2026-03-15
SUCCESS Duration: 386s

Subject

urldata: import port types and conn destination format

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

lib/altsvc.h+1 -1
@@ -30,7 +30,7 @@
struct althost {
char *host;
- unsigned short port;
+ uint16_t port;
enum alpnid alpnid;
};
lib/cf-h2-proxy.c+2 -2
@@ -80,7 +80,7 @@ static CURLcode tunnel_stream_init(struct Curl_cfilter *cf,
struct tunnel_stream *ts)
{
const char *hostname;
- int port;
+ uint16_t port;
bool ipv6_ip;
ts->state = H2_TUNNEL_INIT;
@@ -92,7 +92,7 @@ static CURLcode tunnel_stream_init(struct Curl_cfilter *cf,
Curl_http_proxy_get_destination(cf, &hostname, &port, &ipv6_ip);
/* host:port with IPv6 support */
- ts->authority = curl_maprintf("%s%s%s:%d", ipv6_ip ? "[" : "", hostname,
+ ts->authority = curl_maprintf("%s%s%s:%u", ipv6_ip ? "[" : "", hostname,
ipv6_ip ? "]" : "", port);
if(!ts->authority)
return CURLE_OUT_OF_MEMORY;
lib/cf-ip-happy.c+2 -3
@@ -662,7 +662,7 @@ static CURLcode is_connected(struct Curl_cfilter *cf,
else
#endif
{
- int port;
+ uint16_t port;
if(cf->sockindex == SECONDARYSOCKET)
port = conn->secondary_port;
else if(cf->conn->bits.conn_to_port)
@@ -808,8 +808,7 @@ static CURLcode cf_ip_happy_connect(struct Curl_cfilter *cf,
bool is_ipv6;
if(!Curl_conn_cf_get_ip_info(cf->next, data, &is_ipv6, &ipquad)) {
const char *host;
- int port;
- Curl_conn_get_current_host(data, cf->sockindex, &host, &port);
+ Curl_conn_get_current_host(data, cf->sockindex, &host, NULL);
CURL_TRC_CF(data, cf, "Connected to %s (%s) port %u",
host, ipquad.remote_ip, ipquad.remote_port);
}
lib/cfilters.c+7 -3
@@ -823,11 +823,13 @@ void Curl_conn_get_current_host(struct Curl_easy *data, int sockindex,
const char **phost, int *pport)
{
struct Curl_cfilter *cf, *cf_proxy = NULL;
+ int portarg = -1;
if(!data->conn) {
DEBUGASSERT(0);
*phost = "";
- *pport = -1;
+ if(pport)
+ *pport = -1;
return;
}
@@ -843,12 +845,14 @@ void Curl_conn_get_current_host(struct Curl_easy *data, int sockindex,
* 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))) {
+ &portarg, CURL_UNCONST(phost))) {
/* Everything connected or query unsuccessful, the overall
* connection's destination is the answer */
*phost = data->conn->host.name;
- *pport = data->conn->remote_port;
+ portarg = data->conn->remote_port;
}
+ if(pport)
+ *pport = portarg;
}
CURLcode Curl_cf_def_cntrl(struct Curl_cfilter *cf,
lib/curl_sasl.c+1 -2
@@ -415,9 +415,8 @@ static bool sasl_choose_ntlm(struct Curl_easy *data, struct sasl_ctx *sctx)
data->set.str[STRING_SERVICE_NAME] :
sctx->sasl->params->service;
const char *hostname;
- int port;
- Curl_conn_get_current_host(data, FIRSTSOCKET, &hostname, &port);
+ Curl_conn_get_current_host(data, FIRSTSOCKET, &hostname, NULL);
sctx->mech = SASL_MECH_STRING_NTLM;
sctx->state1 = SASL_NTLM;
lib/http.c+4 -4
@@ -1210,12 +1210,12 @@ CURLcode Curl_http_follow(struct Curl_easy *data, const char *newurl,
/* Clear auth if this redirects to a different port number or protocol,
unless permitted */
if(!data->set.allow_auth_to_other_hosts && (type != FOLLOW_FAKE)) {
- int port;
+ uint16_t port;
bool clear = FALSE;
if(data->set.use_port && data->state.allow_port)
/* a custom port is used */
- port = (int)data->set.use_port;
+ port = data->set.use_port;
else {
curl_off_t value;
char *portnum;
@@ -1228,7 +1228,7 @@ CURLcode Curl_http_follow(struct Curl_easy *data, const char *newurl,
}
p = portnum;
curlx_str_number(&p, &value, 0xffff);
- port = (int)value;
+ port = (uint16_t)value;
curlx_free(portnum);
}
if(port != data->info.conn_remote_port) {
@@ -2969,7 +2969,7 @@ static CURLcode http_add_hd(struct Curl_easy *data,
#ifndef CURL_DISABLE_ALTSVC
case H1_HD_ALT_USED:
if(conn->bits.altused && !Curl_checkheaders(data, STRCONST("Alt-Used")))
- result = curlx_dyn_addf(req, "Alt-Used: %s:%d\r\n",
+ result = curlx_dyn_addf(req, "Alt-Used: %s:%u\r\n",
conn->conn_to_host.name,
conn->conn_to_port);
break;
lib/http_proxy.c+3 -3
@@ -164,7 +164,7 @@ static CURLcode dynhds_add_custom(struct Curl_easy *data,
void Curl_http_proxy_get_destination(struct Curl_cfilter *cf,
const char **phostname,
- int *pport, bool *pipv6_ip)
+ uint16_t *pport, bool *pipv6_ip)
{
DEBUGASSERT(cf);
DEBUGASSERT(cf->conn);
@@ -199,14 +199,14 @@ CURLcode Curl_http_proxy_create_CONNECT(struct httpreq **preq,
struct cf_proxy_ctx *ctx = cf->ctx;
const char *hostname = NULL;
char *authority = NULL;
- int port;
+ uint16_t port;
bool ipv6_ip;
CURLcode result;
struct httpreq *req = NULL;
Curl_http_proxy_get_destination(cf, &hostname, &port, &ipv6_ip);
- authority = curl_maprintf("%s%s%s:%d", ipv6_ip ? "[" : "", hostname,
+ authority = curl_maprintf("%s%s%s:%u", ipv6_ip ? "[" : "", hostname,
ipv6_ip ? "]" : "", port);
if(!authority) {
result = CURLE_OUT_OF_MEMORY;
lib/http_proxy.h+1 -1
@@ -37,7 +37,7 @@ enum Curl_proxy_use {
void Curl_http_proxy_get_destination(struct Curl_cfilter *cf,
const char **phostname,
- int *pport, bool *pipv6_ip);
+ uint16_t *pport, bool *pipv6_ip);
CURLcode Curl_http_proxy_create_CONNECT(struct httpreq **preq,
struct Curl_cfilter *cf,
lib/multi.c+8 -23
@@ -600,22 +600,6 @@ static void multi_done_locked(struct connectdata *conn,
void *userdata)
{
struct multi_done_ctx *mdctx = userdata;
-#ifdef CURLVERBOSE
- const char *host =
-#ifndef CURL_DISABLE_PROXY
- conn->bits.socksproxy ?
- conn->socks_proxy.host.dispname :
- conn->bits.httpproxy ? conn->http_proxy.host.dispname :
-#endif
- conn->bits.conn_to_host ? conn->conn_to_host.dispname :
- conn->host.dispname;
- int port =
-#ifndef CURL_DISABLE_PROXY
- conn->bits.httpproxy ? conn->http_proxy.port :
-#endif
- conn->bits.conn_to_port ? conn->conn_to_port :
- conn->remote_port;
-#endif /* CURLVERBOSE */
Curl_detach_connection(data);
@@ -635,17 +619,18 @@ static void multi_done_locked(struct connectdata *conn,
Curl_dnscache_prune(data);
if(multi_conn_should_close(conn, data, (bool)mdctx->premature)) {
- CURL_TRC_M(data, "multi_done, terminating conn #%" FMT_OFF_T " to %s:%d, "
+ CURL_TRC_M(data, "multi_done, terminating conn #%" FMT_OFF_T " to %s, "
"forbid=%d, close=%d, premature=%d, conn_multiplex=%d",
- conn->connection_id, host, port, data->set.reuse_forbid,
- conn->bits.close, mdctx->premature,
+ conn->connection_id, conn->destination,
+ data->set.reuse_forbid, conn->bits.close, mdctx->premature,
Curl_conn_is_multiplex(conn, FIRSTSOCKET));
connclose(conn, "disconnecting");
Curl_conn_terminate(data, conn, (bool)mdctx->premature);
}
else if(!Curl_conn_get_max_concurrent(data, conn, FIRSTSOCKET)) {
- CURL_TRC_M(data, "multi_done, conn #%" FMT_OFF_T " to %s:%d was shutdown"
- " by server, not reusing", conn->connection_id, host, port);
+ CURL_TRC_M(data, "multi_done, conn #%" FMT_OFF_T " to %s was shutdown"
+ " by server, not reusing", conn->connection_id,
+ conn->destination);
connclose(conn, "server shutdown");
Curl_conn_terminate(data, conn, (bool)mdctx->premature);
}
@@ -654,8 +639,8 @@ static void multi_done_locked(struct connectdata *conn,
if(Curl_cpool_conn_now_idle(data, conn)) {
/* connection kept in the cpool */
data->state.lastconnect_id = conn->connection_id;
- infof(data, "Connection #%" FMT_OFF_T " to host %s:%d left intact",
- conn->connection_id, host, port);
+ infof(data, "Connection #%" FMT_OFF_T " to host %s left intact",
+ conn->connection_id, conn->destination);
}
else {
/* connection was removed from the cpool and destroyed. */
lib/url.c+16 -14
@@ -1366,7 +1366,7 @@ static struct connectdata *allocate_conn(struct Curl_easy *data)
conn->send_idx = 0; /* default for sending transfer data */
conn->connection_id = -1; /* no ID */
conn->attached_xfers = 0;
- conn->remote_port = -1; /* unknown at this point */
+ conn->remote_port = 0; /* unknown at this point */
/* Store creation time to help future close decision making */
conn->created = *Curl_pgrs_now(data);
@@ -1863,7 +1863,7 @@ static CURLcode setup_connection_internals(struct Curl_easy *data,
struct connectdata *conn)
{
const char *hostname;
- int port;
+ uint16_t port;
CURLcode result;
DEBUGF(infof(data, "setup connection, bits.close=%d", conn->bits.close));
@@ -1883,19 +1883,21 @@ static CURLcode setup_connection_internals(struct Curl_easy *data,
else
#endif
{
- port = conn->remote_port;
- if(conn->bits.conn_to_host)
- hostname = conn->conn_to_host.name;
- else
- hostname = conn->host.name;
+ port = conn->bits.conn_to_port ?
+ conn->conn_to_port : conn->remote_port;
+ hostname = conn->bits.conn_to_host ?
+ conn->conn_to_host.name : conn->host.name;
}
#ifdef USE_IPV6
- conn->destination = curl_maprintf("%u/%d/%s", conn->scope_id, port,
- hostname);
-#else
- conn->destination = curl_maprintf("%d/%s", port, hostname);
+ /* IPv6 addresses with a scope_id (0 is default == global) have a
+ * printable representation with a '%<scope_id>' suffix. */
+ if(conn->scope_id)
+ conn->destination = curl_maprintf("[%s:%u]%%%d", hostname, port,
+ conn->scope_id);
+ else
#endif
+ conn->destination = curl_maprintf("%s:%u", hostname, port);
if(!conn->destination)
return CURLE_OUT_OF_MEMORY;
@@ -2890,7 +2892,7 @@ static CURLcode parse_connect_to_slist(struct Curl_easy *data,
}
if(port >= 0) {
- conn->conn_to_port = port;
+ conn->conn_to_port = (uint16_t)port;
conn->bits.conn_to_port = TRUE;
infof(data, "Connecting to port: %d", port);
}
@@ -2994,7 +2996,7 @@ static CURLcode parse_connect_to_slist(struct Curl_easy *data,
conn->conn_to_port = as->dst.port;
conn->bits.conn_to_port = TRUE;
conn->bits.altused = TRUE;
- infof(data, "Alt-svc connecting from [%s]%s:%d to [%s]%s:%d",
+ infof(data, "Alt-svc connecting from [%s]%s:%u to [%s]%s:%u",
Curl_alpnid2str(srcalpnid), host, conn->remote_port,
Curl_alpnid2str(as->dst.alpnid), hostd, as->dst.port);
if(srcalpnid != as->dst.alpnid) {
@@ -3066,7 +3068,7 @@ static CURLcode resolve_server(struct Curl_easy *data,
struct Curl_dns_entry **pdns)
{
struct hostname *ehost;
- int eport;
+ uint16_t eport;
timediff_t timeout_ms = Curl_timeleft_ms(data);
const char *peertype = "host";
CURLcode result;
lib/urldata.h+5 -6
@@ -672,20 +672,19 @@ struct connectdata {
that subsequent bound-requested connections are not accidentally reusing
wrong connections. */
char *localdev;
- uint16_t localportrange;
#if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
int socks5_gssapi_enctype;
#endif
- /* The field below gets set in connect.c:connecthost() */
- int remote_port; /* the remote port, not the proxy port! */
- int conn_to_port; /* the remote port to connect to. valid only if
- bits.conn_to_port is set */
-
uint32_t attached_xfers; /* # of attached easy handles */
#ifdef USE_IPV6
uint32_t scope_id; /* Scope id for IPv6 */
#endif
+ /* The field below gets set in connect.c:connecthost() */
+ uint16_t remote_port; /* the remote port, not the proxy port! */
+ uint16_t conn_to_port; /* the remote port to connect to. valid only if
+ bits.conn_to_port is set */
+ uint16_t localportrange;
uint16_t localport;
uint16_t secondary_port; /* secondary socket remote port to connect to
(ftp) */
lib/vtls/vtls.c+1 -1
@@ -1221,7 +1221,7 @@ static ssl_peer_type get_peer_type(const char *hostname)
CURLcode Curl_ssl_peer_init(struct ssl_peer *peer,
struct Curl_cfilter *cf,
const char *tls_id,
- int transport)
+ uint8_t transport)
{
const char *ehostname, *edispname;
CURLcode result = CURLE_OUT_OF_MEMORY;
lib/vtls/vtls.h+3 -3
@@ -96,8 +96,8 @@ struct ssl_peer {
char *sni; /* SNI version of hostname or NULL if not usable */
char *scache_key; /* for lookups in session cache */
ssl_peer_type type; /* type of the peer information */
- int port; /* port we are talking to */
- int transport; /* one of TRNSPRT_* defines */
+ uint16_t port; /* port we are talking to */
+ uint8_t transport; /* one of TRNSPRT_* defines */
};
CURLsslset Curl_init_sslset_nolock(curl_sslbackend id, const char *name,
@@ -150,7 +150,7 @@ void Curl_ssl_conn_config_update(struct Curl_easy *data, bool for_proxy);
CURLcode Curl_ssl_peer_init(struct ssl_peer *peer,
struct Curl_cfilter *cf,
const char *tls_id,
- int transport);
+ uint8_t transport);
/**
* Free all allocated data and reset peer information.
*/