aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2012-11-06 23:17:57 +0100
committerDaniel Stenberg <daniel@haxx.se>2012-11-06 23:17:57 +0100
commit473003fbdffc4a36e69d396e5164308e3800011d (patch)
tree6a495ceaff032f32261f6bacaf37cbb80659ea61 /lib
parent3f203037021d2f656249565e81cf0f4aa93060e9 (diff)
URL parser: cut off '#' fragments from URLs (better)
The existing logic only cut off the fragment from the separate 'path' buffer which is used when sending HTTP to hosts. The buffer that held the full URL used for proxies were not dealt with. It is now. Test case 5 was updated to use a fragment on a URL over a proxy. Bug: http://curl.haxx.se/bug/view.cgi?id=3579813
Diffstat (limited to 'lib')
-rw-r--r--lib/url.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/url.c b/lib/url.c
index 5ffaa7305..601d8d364 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -3987,9 +3987,17 @@ static CURLcode parseurlandfillconn(struct SessionHandle *data,
last part of the URI. We are looking for the first '#' so that we deal
gracefully with non conformant URI such as http://example.com#foo#bar. */
fragment = strchr(path, '#');
- if(fragment)
+ if(fragment) {
*fragment = 0;
+ /* we know the path part ended with a fragment, so we know the full URL
+ string does too and we need to cut it off from there so it isn't used
+ over proxy */
+ fragment = strchr(data->change.url, '#');
+ if(fragment)
+ *fragment = 0;
+ }
+
/*
* So if the URL was A://B/C#D,
* protop is A