mirror of
https://github.com/curl/curl.git
synced 2026-06-03 13:54:16 +03:00
url: fix CURLU and location following
Prior to this change if the user set a URL handle (CURLOPT_CURLU) it was incorrectly used for the location follow, resulting in infinite requests to the original location. Reported-by: sspiri@users.noreply.github.com Fixes https://github.com/curl/curl/issues/5709 Closes https://github.com/curl/curl/pull/5713
This commit is contained in:
parent
d8b8afe320
commit
a12a16151a
5 changed files with 133 additions and 4 deletions
|
|
@ -1836,11 +1836,12 @@ static CURLcode parseurlandfillconn(struct Curl_easy *data,
|
|||
CURLU *uh;
|
||||
CURLUcode uc;
|
||||
char *hostname;
|
||||
bool use_set_uh = (data->set.uh && !data->state.this_is_a_follow);
|
||||
|
||||
up_free(data); /* cleanup previous leftovers first */
|
||||
|
||||
/* parse the URL */
|
||||
if(data->set.uh) {
|
||||
if(use_set_uh) {
|
||||
uh = data->state.uh = curl_url_dup(data->set.uh);
|
||||
}
|
||||
else {
|
||||
|
|
@ -1863,7 +1864,7 @@ static CURLcode parseurlandfillconn(struct Curl_easy *data,
|
|||
data->change.url_alloc = TRUE;
|
||||
}
|
||||
|
||||
if(!data->set.uh) {
|
||||
if(!use_set_uh) {
|
||||
char *newurl;
|
||||
uc = curl_url_set(uh, CURLUPART_URL, data->change.url,
|
||||
CURLU_GUESS_SCHEME |
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue