diff --git a/lib/url.c b/lib/url.c
index 3ace5ca237..505e08a7e1 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -2100,7 +2100,7 @@ static CURLcode url_create_needle(struct Curl_easy *data,
Curl_hash_str, curlx_str_key_compare, conn_meta_freeentry);
/*************************************************************
- * Determine `conn->origin` and propulate `data->state.up` and
+ * Determine `conn->origin` and populate `data->state.up` and
* other URL related properties.
*************************************************************/
result = url_set_conn_origin_etc(data, needle);
@@ -2135,6 +2135,15 @@ static CURLcode url_create_needle(struct Curl_easy *data,
goto out;
}
+ /*************************************************************
+ * Check whether the host and the "connect to host" are equal.
+ * Do this after the hostnames have been IDN-converted and
+ * before initializing the proxy.
+ *************************************************************/
+ if(Curl_peer_equal(needle->origin, needle->via_peer)) {
+ Curl_peer_unlink(&needle->via_peer);
+ }
+
#ifndef CURL_DISABLE_PROXY
/* Going via a unix socket ignores any proxy settings */
if(network_scheme &&
@@ -2149,14 +2158,6 @@ static CURLcode url_create_needle(struct Curl_easy *data,
if(result)
goto out;
- /*************************************************************
- * Check whether the host and the "connect to host" are equal.
- * Do this after the hostnames have been IDN-converted.
- *************************************************************/
- if(Curl_peer_equal(needle->origin, needle->via_peer)) {
- Curl_peer_unlink(&needle->via_peer);
- }
-
/*************************************************************
* Setup internals depending on protocol. Needs to be done after
* we figured out what/if proxy to use.
diff --git a/tests/data/test2050 b/tests/data/test2050
index ef20c69b82..3c2a9b40f5 100644
--- a/tests/data/test2050
+++ b/tests/data/test2050
@@ -50,7 +50,8 @@ http-proxy
-http://www.example.com.%TESTNUMBER/%TESTNUMBER --connect-to ::connect.example.com.%TESTNUMBER:%HTTPPORT -x %HOSTIP:%PROXYPORT
+http://www.example.com.%TESTNUMBER/%TESTNUMBER --connect-to ::connect.example.com.%TESTNUMBER:%HTTPPORT -x %HOSTIP:%PROXYPORT --next
+http://www.example.com.%TESTNUMBER:%HTTPPORT/%TESTNUMBER --connect-to ::www.example.com.%TESTNUMBER:%HTTPPORT -x %HOSTIP:%PROXYPORT
proxy
@@ -59,12 +60,18 @@ proxy
# Verify data after the test has been "shot"
-
+
CONNECT connect.example.com.%TESTNUMBER:%HTTPPORT HTTP/1.1
Host: connect.example.com.%TESTNUMBER:%HTTPPORT
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive
+GET http://www.example.com.%TESTNUMBER:%HTTPPORT/%TESTNUMBER HTTP/1.1
+Host: www.example.com.%TESTNUMBER:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Proxy-Connection: Keep-Alive
+
GET /%TESTNUMBER HTTP/1.1
diff --git a/tests/data/test2055 b/tests/data/test2055
index 608facb86e..6a7a8d34ac 100644
--- a/tests/data/test2055
+++ b/tests/data/test2055
@@ -54,18 +54,25 @@ socks5
proxy
-http://www.example.com.%TESTNUMBER/%TESTNUMBER --connect-to ::connect.example.com.%TESTNUMBER:%HTTPPORT -x %HOSTIP:%PROXYPORT --preproxy socks5://%HOSTIP:%SOCKSPORT
+http://www.example.com.%TESTNUMBER/%TESTNUMBER --connect-to ::connect.example.com.%TESTNUMBER:%HTTPPORT -x %HOSTIP:%PROXYPORT --preproxy socks5://%HOSTIP:%SOCKSPORT --next
+http://www.example.com.%TESTNUMBER:%HTTPPORT/%TESTNUMBER --connect-to ::www.example.com.%TESTNUMBER:%HTTPPORT -x %HOSTIP:%PROXYPORT --preproxy socks5://%HOSTIP:%SOCKSPORT
# Verify data after the test has been "shot"
-
+
CONNECT connect.example.com.%TESTNUMBER:%HTTPPORT HTTP/1.1
Host: connect.example.com.%TESTNUMBER:%HTTPPORT
User-Agent: curl/%VERSION
Proxy-Connection: Keep-Alive
+GET http://www.example.com.%TESTNUMBER:%HTTPPORT/%TESTNUMBER HTTP/1.1
+Host: www.example.com.%TESTNUMBER:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Proxy-Connection: Keep-Alive
+
GET /%TESTNUMBER HTTP/1.1