urldata: connection bit ipv6_ip is wrong

Eliminate `conn->bits.ipv6_ip`

The bit was only correct for the first transfer using a connection. Use
`data->state.up.hostname` instead in places that need the URL hostname
in its original form.

Fix parseurlandfillconn() to not modify `data->state.up.hostname` before
copying the connection's hostname, but modify the copy instead, leaving
the URL hostname intact.

Closes #20919
This commit is contained in:
Stefan Eissing 2026-03-13 14:29:13 +01:00 committed by Daniel Stenberg
parent eb5af3a9c7
commit 412cd2577a
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2
8 changed files with 29 additions and 48 deletions

View file

@ -2422,13 +2422,9 @@ static CURLcode myssh_connect(struct Curl_easy *data, bool *done)
return CURLE_FAILED_INIT;
}
if(conn->bits.ipv6_ip) {
char ipv6[MAX_IPADR_LEN];
curl_msnprintf(ipv6, sizeof(ipv6), "[%s]", conn->host.name);
rc = ssh_options_set(sshc->ssh_session, SSH_OPTIONS_HOST, ipv6);
}
else
rc = ssh_options_set(sshc->ssh_session, SSH_OPTIONS_HOST, conn->host.name);
rc = ssh_options_set(sshc->ssh_session, SSH_OPTIONS_HOST,
(data->state.up.hostname[0] == '[') ?
data->state.up.hostname : conn->host.name);
if(rc != SSH_OK) {
failf(data, "Could not set remote host");