urldata: import port types and conn destination format
No binary (build failed)
—
(log yok)
| @@ -30,7 +30,7 @@ | |
| struct althost { | |
| char *host; | |
| - | unsigned short port; |
| + | uint16_t port; |
| enum alpnid alpnid; | |
| }; | |
| @@ -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; | |
| @@ -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); | |
| } | |
| @@ -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, | |
| @@ -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; | |
| @@ -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; | |
| @@ -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; | |
| @@ -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, | |
| @@ -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. */ | |
| @@ -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; | |
| @@ -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) */ | |
| @@ -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; | |
| @@ -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. | |
| */ | |