]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
url: keep the question mark for empty queries
authorDaniel Stenberg <daniel@haxx.se>
Wed, 13 May 2026 08:35:02 +0000 (10:35 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Wed, 13 May 2026 12:34:54 +0000 (14:34 +0200)
Reported-by: Bill Mill
Fixes #21544

Verified by test 1721

Closes #21584

lib/url.c
tests/data/Makefile.am
tests/data/test1721 [new file with mode: 0644]

index bcd8f54aa8aa131a17e7e1fab69f3fb9bef730d1..ff1a9fd4505e32a5a9c2057dc650c86ee72a95d5 100644 (file)
--- 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;
index b63c9c06a0c93286eb10a3539ae98f61459a9a5b..3f520af2539c404a1f35e51994259899f96122d4 100644 (file)
@@ -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 (file)
index 0000000..1b0e7a8
--- /dev/null
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+</keywords>
+</info>
+
+<reply>
+<data crlf="headers">
+HTTP/1.1 200 OK
+Content-Length: 6
+Content-Type: text/html
+
+-foo-
+</data>
+</reply>
+
+<client>
+<server>
+http
+</server>
+<name>
+Keep question mark for empty query
+</name>
+<command>
+"http://%HOSTIP:%HTTPPORT/hello?" -w '%output{%LOGDIR/out%TESTNUMBER}%{url_effective}'
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<file nonewline="yes" name="%LOGDIR/out%TESTNUMBER">
+http://%HOSTIP:%HTTPPORT/hello?
+</file>
+<protocol crlf="headers">
+GET /hello? HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+</protocol>
+</verify>
+</testcase>