mirror of https://github.com/openssl/openssl.git
OSSL_HTTP_open(): fix completion with default port for IPv6 host addresses
Reviewed-by: Viktor Dukhovni <viktor@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/25010)
This commit is contained in:
parent
ec4b123a96
commit
1c90d36ab1
|
|
@ -928,6 +928,20 @@ int OSSL_HTTP_REQ_CTX_nbio_d2i(OSSL_HTTP_REQ_CTX *rctx,
|
|||
|
||||
#ifndef OPENSSL_NO_SOCK
|
||||
|
||||
static const char *explict_or_default_port(const char *hostserv, const char *port, int use_ssl)
|
||||
{
|
||||
if (port == NULL) {
|
||||
char *service = NULL;
|
||||
|
||||
if (!BIO_parse_hostserv(hostserv, NULL, &service, BIO_PARSE_PRIO_HOST))
|
||||
return NULL;
|
||||
if (service == NULL) /* implicit port */
|
||||
port = use_ssl ? OSSL_HTTPS_PORT : OSSL_HTTP_PORT;
|
||||
OPENSSL_free(service);
|
||||
} /* otherwise take the explicitly given port */
|
||||
return port;
|
||||
}
|
||||
|
||||
/* set up a new connection BIO, to HTTP server or to HTTP(S) proxy if given */
|
||||
static BIO *http_new_bio(const char *server /* optionally includes ":port" */,
|
||||
const char *server_port /* explicit server port */,
|
||||
|
|
@ -947,8 +961,7 @@ static BIO *http_new_bio(const char *server /* optionally includes ":port" */,
|
|||
port = proxy_port;
|
||||
}
|
||||
|
||||
if (port == NULL && strchr(host, ':') == NULL)
|
||||
port = use_ssl ? OSSL_HTTPS_PORT : OSSL_HTTP_PORT;
|
||||
port = explict_or_default_port(host, port, use_ssl);
|
||||
|
||||
cbio = BIO_new_connect(host /* optionally includes ":port" */);
|
||||
if (cbio == NULL)
|
||||
|
|
@ -1035,8 +1048,6 @@ OSSL_HTTP_REQ_CTX *OSSL_HTTP_open(const char *server, const char *port,
|
|||
}
|
||||
if (port != NULL && *port == '\0')
|
||||
port = NULL;
|
||||
if (port == NULL && strchr(server, ':') == NULL)
|
||||
port = use_ssl ? OSSL_HTTPS_PORT : OSSL_HTTP_PORT;
|
||||
proxy = OSSL_HTTP_adapt_proxy(proxy, no_proxy, server, use_ssl);
|
||||
if (proxy != NULL
|
||||
&& !OSSL_HTTP_parse_url(proxy, NULL /* use_ssl */, NULL /* user */,
|
||||
|
|
|
|||
Loading…
Reference in New Issue