diff options
author | Micael Karlberg <[email protected]> | 2011-10-18 17:47:53 +0200 |
---|---|---|
committer | Micael Karlberg <[email protected]> | 2011-10-18 17:47:53 +0200 |
commit | c30eb71556cd569fea82de2a1c2a5a17e71650c1 (patch) | |
tree | 80ea91aedcae12b65d0a51c41f638b38fbf6a69b /lib/inets/src/http_client/httpc_response.erl | |
parent | 45e501e1280839d91969e9d73449b9e474468e3e (diff) | |
download | otp-c30eb71556cd569fea82de2a1c2a5a17e71650c1.tar.gz otp-c30eb71556cd569fea82de2a1c2a5a17e71650c1.tar.bz2 otp-c30eb71556cd569fea82de2a1c2a5a17e71650c1.zip |
[httpc] Wrong Host header in IPv6 HTTP requests.
When a URI with a IPv6 host is parsed, the brackets that encapsulates
the nnn is removed. This value is then supplied as the host header.
This can cause problems with some servers.
A workaround for this is to use headers_as_is and provide the host
header with the requst call
To solve this a new option has been added, ipv6_host_with_brackets.
This option specifies if the host value of the host header shall include
the branckets or not. By default, it does not (as before).
OTP-9628
Diffstat (limited to 'lib/inets/src/http_client/httpc_response.erl')
-rw-r--r-- | lib/inets/src/http_client/httpc_response.erl | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/inets/src/http_client/httpc_response.erl b/lib/inets/src/http_client/httpc_response.erl index 4a2637a179..2414ed0911 100644 --- a/lib/inets/src/http_client/httpc_response.erl +++ b/lib/inets/src/http_client/httpc_response.erl @@ -340,7 +340,9 @@ redirect(Response = {StatusLine, Headers, Body}, Request) -> undefined -> transparent(Response, Request); RedirUrl -> - case http_uri:parse(RedirUrl) of + UrlParseOpts = [{ipv6_host_with_brackets, + Request#request.ipv6_host_with_brackets}], + case http_uri:parse(RedirUrl, UrlParseOpts) of {error, no_scheme} when (Request#request.settings)#http_options.relaxed -> NewLocation = fix_relative_uri(Request, RedirUrl), @@ -352,8 +354,7 @@ redirect(Response = {StatusLine, Headers, Body}, Request) -> %% Automatic redirection {ok, {Scheme, _, Host, Port, Path, Query}} -> NewHeaders = - (Request#request.headers)#http_request_h{host = - Host}, + (Request#request.headers)#http_request_h{host = Host}, NewRequest = Request#request{redircount = Request#request.redircount+1, |