aboutsummaryrefslogtreecommitdiffstats
path: root/OTP_VERSION
diff options
context:
space:
mode:
authorRoss Schlaikjer <[email protected]>2018-07-02 10:26:15 -0400
committerRoss Schlaikjer <[email protected]>2018-07-06 08:46:11 -0400
commit9993d349a8abcb7ba07bebcc8cc71ecec291ca68 (patch)
tree028f642f11ca37d70ea896ee736be0f4252e50f0 /OTP_VERSION
parent2f09a0f78e7d18d8b83ef2696efa940f74222c4e (diff)
downloadotp-9993d349a8abcb7ba07bebcc8cc71ecec291ca68.tar.gz
otp-9993d349a8abcb7ba07bebcc8cc71ecec291ca68.tar.bz2
otp-9993d349a8abcb7ba07bebcc8cc71ecec291ca68.zip
Do not assert that new URI port is same as old port
When handling 301 redirects from http -> https on Erlang 21.0.1, the following error is encountered: ``` 8> Options = []. 9> httpc:request(head, {"http://rhye.org", []}, Options, []). {error,{shutdown,{{error,{badmatch,443}}, [{httpc_response,resolve_uri,7, [{file,"/usr/local/lib/erlang/lib/inets-7.0/src/http_client/httpc_response.erl"}, {line,431}]}, {httpc_response,redirect,2, [{file,"/usr/local/lib/erlang/lib/inets-7.0/src/http_client/httpc_response.erl"}, {line,396}]}, {httpc_handler,handle_response,1, [{file,"httpc_handler.erl"},{line,1052}]}, {httpc_handler,handle_info,2, [{file,"httpc_handler.erl"},{line,283}]}, {gen_server,try_dispatch,4, [{file,"gen_server.erl"},{line,637}]}, {gen_server,handle_msg,6, [{file,"gen_server.erl"},{line,711}]}, {proc_lib,init_p_do_apply,3, [{file,"proc_lib.erl"},{line,249}]}]}}} ``` This seems to be caused by the following code in `resolve_uri`: ``` resolve_uri(Scheme, Host, Port, Path, Query, URI, Map0) -> case maps:is_key(scheme, URI) of true -> Port = get_port(URI) ``` The value of `Port` passed in to `resolve_uri` here is 80, since the original URL is http. However, since the redirected URL is https, the `get_port` call returns 443, which is not equal to 80, and crashes. Assigning to a new variable seems to fix redirects.
Diffstat (limited to 'OTP_VERSION')
0 files changed, 0 insertions, 0 deletions