http_proxy: multiple CONNECT with hyper done better

Enabled test 206

Closes #7888
This commit is contained in:
Daniel Stenberg 2021-10-21 16:42:42 +02:00
Родитель 5276ec941f
Коммит 823d3ab855
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 5CC908FDB71E12C2
2 изменённых файлов: 17 добавлений и 3 удалений

Просмотреть файл

@ -284,8 +284,7 @@ static CURLcode CONNECT(struct Curl_easy *data,
/* This only happens if we've looped here due to authentication /* This only happens if we've looped here due to authentication
reasons, and we don't really use the newly cloned URL here reasons, and we don't really use the newly cloned URL here
then. Just free() it. */ then. Just free() it. */
free(data->req.newurl); Curl_safefree(data->req.newurl);
data->req.newurl = NULL;
/* initialize send-buffer */ /* initialize send-buffer */
Curl_dyn_init(req, DYN_HTTP_REQUEST); Curl_dyn_init(req, DYN_HTTP_REQUEST);
@ -805,6 +804,14 @@ static CURLcode CONNECT(struct Curl_easy *data,
goto error; goto error;
} }
infof(data, "Establish HTTP proxy tunnel to %s:%d",
hostname, remote_port);
/* This only happens if we've looped here due to authentication
reasons, and we don't really use the newly cloned URL here
then. Just free() it. */
Curl_safefree(data->req.newurl);
result = CONNECT_host(data, conn, hostname, remote_port, result = CONNECT_host(data, conn, hostname, remote_port,
&hostheader, &host); &hostheader, &host);
if(result) if(result)
@ -945,6 +952,14 @@ static CURLcode CONNECT(struct Curl_easy *data,
default: default:
break; break;
} }
/* If we are supposed to continue and request a new URL, which basically
* means the HTTP authentication is still going on so if the tunnel
* is complete we start over in INIT state */
if(data->req.newurl && (TUNNEL_COMPLETE == s->tunnel_state)) {
infof(data, "CONNECT request done, loop to make another");
connect_init(data, TRUE); /* reinit */
}
} while(data->req.newurl); } while(data->req.newurl);
result = CURLE_OK; result = CURLE_OK;

Просмотреть файл

@ -40,7 +40,6 @@
# hyper support remains EXPERIMENTAL as long as there's a test number # hyper support remains EXPERIMENTAL as long as there's a test number
# listed below # listed below
%if hyper %if hyper
206
207 207
209 209
213 213