aboutsummaryrefslogtreecommitdiffstats
path: root/test/rfc7231_SUITE.erl
diff options
context:
space:
mode:
Diffstat (limited to 'test/rfc7231_SUITE.erl')
-rw-r--r--test/rfc7231_SUITE.erl26
1 files changed, 21 insertions, 5 deletions
diff --git a/test/rfc7231_SUITE.erl b/test/rfc7231_SUITE.erl
index 90234d2..88bc114 100644
--- a/test/rfc7231_SUITE.erl
+++ b/test/rfc7231_SUITE.erl
@@ -88,13 +88,18 @@ do_proxy_loop(ClientSocket, OriginSocket) ->
end.
do_origin_start(Transport) ->
+ do_origin_start(Transport, http).
+
+do_origin_start(Transport, Protocol) ->
Self = self(),
Pid = spawn_link(fun() ->
case Transport of
tcp ->
do_origin_init_tcp(Self);
- tls ->
- do_origin_init_tls(Self)
+ tls when Protocol =:= http ->
+ do_origin_init_tls(Self);
+ tls when Protocol =:= http2 ->
+ do_origin_init_tls_h2(Self)
end
end),
Port = do_receive(Pid),
@@ -116,6 +121,17 @@ do_origin_init_tls(Parent) ->
ok = ssl:ssl_accept(ClientSocket, 1000),
do_origin_loop(Parent, ClientSocket, ssl).
+do_origin_init_tls_h2(Parent) ->
+ Opts = ct_helper:get_certs_from_ets(),
+ {ok, ListenSocket} = ssl:listen(0, [binary, {active, false},
+ {alpn_preferred_protocols, [<<"h2">>]}|Opts]),
+ {ok, {_, Port}} = ssl:sockname(ListenSocket),
+ Parent ! {self(), Port},
+ {ok, ClientSocket} = ssl:transport_accept(ListenSocket, 1000),
+ ok = ssl:ssl_accept(ClientSocket, 1000),
+ {ok, <<"h2">>} = ssl:negotiated_protocol(ClientSocket),
+ do_origin_loop(Parent, ClientSocket, ssl).
+
do_origin_loop(Parent, ClientSocket, ClientTransport) ->
case ClientTransport:recv(ClientSocket, 0, 1000) of
{ok, Data} ->
@@ -146,7 +162,7 @@ connect_https(_) ->
do_connect_http(tls).
do_connect_http(Transport) ->
- {ok, OriginPid, OriginPort} = do_origin_start(Transport),
+ {ok, OriginPid, OriginPort} = do_origin_start(Transport, http),
{ok, ProxyPid, ProxyPort} = do_proxy_start(),
Authority = iolist_to_binary(["localhost:", integer_to_binary(OriginPort)]),
{ok, ConnPid} = gun:open("localhost", ProxyPort),
@@ -175,7 +191,7 @@ connect_h2(_) ->
do_connect_h2(tls).
do_connect_h2(Transport) ->
- {ok, OriginPid, OriginPort} = do_origin_start(Transport),
+ {ok, OriginPid, OriginPort} = do_origin_start(Transport, http2),
{ok, ProxyPid, ProxyPort} = do_proxy_start(),
Authority = iolist_to_binary(["localhost:", integer_to_binary(OriginPort)]),
{ok, ConnPid} = gun:open("localhost", ProxyPort),
@@ -184,7 +200,7 @@ do_connect_h2(Transport) ->
host => "localhost",
port => OriginPort,
transport => Transport,
- protocol => http2
+ protocols => [http2]
}),
{request, <<"CONNECT">>, Authority, 'HTTP/1.1', _} = do_receive(ProxyPid),
{response, fin, 200, _} = gun:await(ConnPid, StreamRef),