1
0
mirror of https://github.com/moparisthebest/curl synced 2024-12-24 09:08:49 -05:00

url: default conn->port to the same as conn->remote_port

... so that it has a sensible value when ConnectionExists() is called which
needs it set to differentiate host "bundles" correctly on port number!

Also, make conncache:hashkey() use correct port for bundles that are proxy vs
host connections.

Probably a regression from 7.62.0

Reported-by: Tom van der Woerdt
Fixes #3956
Closes #3957
This commit is contained in:
Daniel Stenberg 2019-05-28 16:17:51 +02:00
parent 2f11fbf208
commit a6183ab23a
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2
2 changed files with 6 additions and 3 deletions

View File

@ -163,9 +163,12 @@ static void hashkey(struct connectdata *conn, char *buf,
const char **hostp) const char **hostp)
{ {
const char *hostname; const char *hostname;
long port = conn->remote_port;
if(conn->bits.httpproxy && !conn->bits.tunnel_proxy) if(conn->bits.httpproxy && !conn->bits.tunnel_proxy) {
hostname = conn->http_proxy.host.name; hostname = conn->http_proxy.host.name;
port = conn->port;
}
else if(conn->bits.conn_to_host) else if(conn->bits.conn_to_host)
hostname = conn->conn_to_host.name; hostname = conn->conn_to_host.name;
else else
@ -178,7 +181,7 @@ static void hashkey(struct connectdata *conn, char *buf,
DEBUGASSERT(len > 32); DEBUGASSERT(len > 32);
/* put the number first so that the hostname gets cut off if too long */ /* put the number first so that the hostname gets cut off if too long */
msnprintf(buf, len, "%ld%s", conn->port, hostname); msnprintf(buf, len, "%ld%s", port, hostname);
} }
void Curl_conncache_unlock(struct Curl_easy *data) void Curl_conncache_unlock(struct Curl_easy *data)

View File

@ -2027,7 +2027,7 @@ static CURLcode parseurlandfillconn(struct Curl_easy *data,
} }
else { else {
unsigned long port = strtoul(data->state.up.port, NULL, 10); unsigned long port = strtoul(data->state.up.port, NULL, 10);
conn->remote_port = curlx_ultous(port); conn->port = conn->remote_port = curlx_ultous(port);
} }
(void)curl_url_get(uh, CURLUPART_QUERY, &data->state.up.query, 0); (void)curl_url_get(uh, CURLUPART_QUERY, &data->state.up.query, 0);