aboutsummaryrefslogtreecommitdiffstats
path: root/src/gun_tls_proxy.erl
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2019-04-22 13:40:07 +0200
committerLoïc Hoguin <[email protected]>2019-04-22 13:40:07 +0200
commit5e3a5337a34dcb09418d4f412b11ede4510e3ddc (patch)
tree294fde46b7b0775ce62c854892ddcf1c4a73ead2 /src/gun_tls_proxy.erl
parentb2aed85a2a8794f0cc23755d1a10c602ab289ff4 (diff)
downloadgun-5e3a5337a34dcb09418d4f412b11ede4510e3ddc.tar.gz
gun-5e3a5337a34dcb09418d4f412b11ede4510e3ddc.tar.bz2
gun-5e3a5337a34dcb09418d4f412b11ede4510e3ddc.zip
Make gun_tls_proxy work for HTTP/2 connections
Diffstat (limited to 'src/gun_tls_proxy.erl')
-rw-r--r--src/gun_tls_proxy.erl7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/gun_tls_proxy.erl b/src/gun_tls_proxy.erl
index 8adb5b6..123a156 100644
--- a/src/gun_tls_proxy.erl
+++ b/src/gun_tls_proxy.erl
@@ -222,8 +222,13 @@ not_connected({call, _}, Msg={send, _}, State) ->
not_connected(cast, Msg={setopts, _}, State) ->
?DEBUG_LOG("postpone ~0p state ~0p", [Msg, State]),
{keep_state_and_data, postpone};
-not_connected(cast, Msg={connect_proc, {ok, Socket}}, State) ->
+not_connected(cast, Msg={connect_proc, {ok, Socket}}, State=#state{owner_pid=OwnerPid}) ->
?DEBUG_LOG("msg ~0p state ~0p", [Msg, State]),
+ Protocol = case ssl:negotiated_protocol(Socket) of
+ {ok, <<"h2">>} -> gun_http2;
+ _ -> gun_http
+ end,
+ OwnerPid ! {connect_protocol, Protocol},
ok = ssl:setopts(Socket, [{active, true}]),
{next_state, connected, State#state{proxy_socket=Socket}};
not_connected(cast, Msg={connect_proc, Error}, State) ->