diff options
author | Kirilll Zaborsky <[email protected]> | 2015-08-26 09:57:07 +0300 |
---|---|---|
committer | Zandra <[email protected]> | 2015-11-27 11:42:05 +0100 |
commit | 8391c2717200ce001684c53aca30ad64487cd281 (patch) | |
tree | d2f712470b69c1ffc22d39b74e510670d9e2837d | |
parent | a838b671ef9cc7582f0768778a0447df614b71dd (diff) | |
download | otp-8391c2717200ce001684c53aca30ad64487cd281.tar.gz otp-8391c2717200ce001684c53aca30ad64487cd281.tar.bz2 otp-8391c2717200ce001684c53aca30ad64487cd281.zip |
inets: SNI to be passed with requests through CONNECT
httpc should fill SNI extenstion for HTTPS requests sent through
CONNECT tunnel to provide proper access to websites using SNI
-rw-r--r-- | lib/inets/src/http_client/httpc_handler.erl | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/lib/inets/src/http_client/httpc_handler.erl b/lib/inets/src/http_client/httpc_handler.erl index e6dcfee818..d1c52dcc78 100644 --- a/lib/inets/src/http_client/httpc_handler.erl +++ b/lib/inets/src/http_client/httpc_handler.erl @@ -1827,11 +1827,13 @@ host_header(_, URI) -> tls_upgrade(#state{status = {ssl_tunnel, #request{settings = - #http_options{ssl = {_, TLSOptions} = SocketType}, - address = Address} = Request}, + #http_options{ssl = {_, TLSOptions0} = SocketType}, + address = {Host, _} = Address} = Request}, session = #session{socket = TCPSocket} = Session0, options = Options} = State) -> + TLSOptions = maybe_add_sni(Host, TLSOptions0), + case ssl:connect(TCPSocket, TLSOptions) of {ok, TLSSocket} -> ClientClose = httpc_request:is_client_closing(Request#request.headers), @@ -1862,6 +1864,15 @@ tls_upgrade(#state{status = {stop, normal, State#state{request = Request}} end. +maybe_add_sni(Host, Options) -> + case http_util:is_hostname(Host) andalso + not lists:keymember(server_name_indication, 1, Options) of + true -> + [{server_name_indication, Host} | Options]; + false -> + Options + end. + %% --------------------------------------------------------------------- %% Session wrappers %% --------------------------------------------------------------------- |