summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabian Keil <fk@fabiankeil.de>2021-01-19 11:13:41 +0100
committerDaniel Stenberg <daniel@haxx.se>2021-01-20 15:21:13 +0100
commit0015e06151169dd6fe9f2b4eaa324af0a8f99adb (patch)
tree702e4a0b8ac04099b0000d5731a900d171d01746
parent86a95eb07622ca66a4f8ea909824571ed8f22970 (diff)
downloadcurl-0015e06151169dd6fe9f2b4eaa324af0a8f99adb.tar.gz
http: get CURLOPT_REQUEST_TARGET working with a HTTP proxy
Added test 1613 to verify. Closes #6490
-rw-r--r--lib/http.c5
-rw-r--r--tests/data/Makefile.inc2
-rw-r--r--tests/data/test161353
3 files changed, 57 insertions, 3 deletions
diff --git a/lib/http.c b/lib/http.c
index 83484d3af..b0bca64c4 100644
--- a/lib/http.c
+++ b/lib/http.c
@@ -2177,8 +2177,9 @@ CURLcode Curl_http_target(struct Curl_easy *data,
curl_url_cleanup(h);
- /* url */
- result = Curl_dyn_add(r, url);
+ /* target or url */
+ result = Curl_dyn_add(r, data->set.str[STRING_TARGET]?
+ data->set.str[STRING_TARGET]:url);
free(url);
if(result)
return (result);
diff --git a/tests/data/Makefile.inc b/tests/data/Makefile.inc
index 08ac64882..f92c50beb 100644
--- a/tests/data/Makefile.inc
+++ b/tests/data/Makefile.inc
@@ -192,7 +192,7 @@ test1566 test1567 test1568 \
test1590 test1591 test1592 test1593 test1594 test1595 test1596 \
\
test1600 test1601 test1602 test1603 test1604 test1605 test1606 test1607 \
-test1608 test1609 test1610 test1611 test1612 \
+test1608 test1609 test1610 test1611 test1612 test1613 \
\
test1620 test1621 \
\
diff --git a/tests/data/test1613 b/tests/data/test1613
new file mode 100644
index 000000000..ae6cab070
--- /dev/null
+++ b/tests/data/test1613
@@ -0,0 +1,53 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP proxy
+--request-target
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Sat, 29 Feb 2020 16:10:44 GMT
+Server: Blafasel/1.1
+Last-Modified: Sat, 29 Feb 2020 16:10:44 GMT
+Content-Length: 0
+Connection: close
+Content-Type: text/html
+
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+<name>
+Send "OPTIONS *" with --request-target to a proxy
+</name>
+<features>
+proxy
+</features>
+<command>
+--request-target '*' -X OPTIONS --proxy http://%HOSTIP:%HTTPPORT/ -H "Testno: 1613" http://www.example.org/
+</command>
+</client>
+
+<verify>
+<protocol>
+OPTIONS * HTTP/1.1
+Host: www.example.org
+User-Agent: curl/%VERSION
+Accept: */*
+Proxy-Connection: Keep-Alive
+Testno: 1613
+
+</protocol>
+</verify>
+</testcase>