From b079595f2e903b820a027a68ea5c4c1e6697038b Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Wed, 13 May 2026 10:35:02 +0200 Subject: [PATCH] url: keep the question mark for empty queries Reported-by: Bill Mill Fixes #21544 Verified by test 1721 Closes #21584 --- lib/url.c | 5 +++-- tests/data/Makefile.am | 2 +- tests/data/test1721 | 45 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 49 insertions(+), 3 deletions(-) create mode 100644 tests/data/test1721 diff --git a/lib/url.c b/lib/url.c index bcd8f54aa8..ff1a9fd450 100644 --- a/lib/url.c +++ b/lib/url.c @@ -1543,7 +1543,7 @@ static CURLcode parseurlandfillconn(struct Curl_easy *data, } /* after it was parsed, get the generated normalized version */ - uc = curl_url_get(uh, CURLUPART_URL, &newurl, 0); + uc = curl_url_get(uh, CURLUPART_URL, &newurl, CURLU_GET_EMPTY); if(uc) { result = Curl_uc_to_curlcode(uc); goto out; @@ -1600,7 +1600,8 @@ static CURLcode parseurlandfillconn(struct Curl_easy *data, goto out; } - uc = curl_url_get(uh, CURLUPART_QUERY, &data->state.up.query, 0); + uc = curl_url_get(uh, CURLUPART_QUERY, &data->state.up.query, + CURLU_GET_EMPTY); if(uc && (uc != CURLUE_NO_QUERY)) { result = CURLE_OUT_OF_MEMORY; goto out; diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am index b63c9c06a0..3f520af253 100644 --- a/tests/data/Makefile.am +++ b/tests/data/Makefile.am @@ -228,7 +228,7 @@ test1680 test1681 test1682 test1683 test1684 test1685 \ \ test1700 test1701 test1702 test1703 test1704 test1705 test1706 test1707 \ test1708 test1709 test1710 test1711 test1712 test1713 test1714 test1715 \ -test1720 \ +test1720 test1721 \ \ test1800 test1801 test1802 test1847 test1848 test1849 test1850 test1851 \ \ diff --git a/tests/data/test1721 b/tests/data/test1721 new file mode 100644 index 0000000000..1b0e7a88f7 --- /dev/null +++ b/tests/data/test1721 @@ -0,0 +1,45 @@ + + + + +HTTP +HTTP GET + + + + + +HTTP/1.1 200 OK +Content-Length: 6 +Content-Type: text/html + +-foo- + + + + + +http + + +Keep question mark for empty query + + +"http://%HOSTIP:%HTTPPORT/hello?" -w '%output{%LOGDIR/out%TESTNUMBER}%{url_effective}' + + + +# Verify data after the test has been "shot" + + +http://%HOSTIP:%HTTPPORT/hello? + + +GET /hello? HTTP/1.1 +Host: %HOSTIP:%HTTPPORT +User-Agent: curl/%VERSION +Accept: */* + + + +