aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2020-08-26 11:20:06 +0200
committerLoïc Hoguin <[email protected]>2020-09-21 15:51:58 +0200
commit96e36a877fe79362c829492f71d532541ca857d7 (patch)
treeadcd5b94083a43c2af23ba98debed252072b422b
parentd056e5fb2a1fbb54e108c5c61384573acf21b4cf (diff)
downloadgun-96e36a877fe79362c829492f71d532541ca857d7.tar.gz
gun-96e36a877fe79362c829492f71d532541ca857d7.tar.bz2
gun-96e36a877fe79362c829492f71d532541ca857d7.zip
Few more tests and fixes
-rw-r--r--src/gun_http2.erl7
-rw-r--r--test/rfc7540_SUITE.erl15
2 files changed, 15 insertions, 7 deletions
diff --git a/src/gun_http2.erl b/src/gun_http2.erl
index ad52555..4908b6f 100644
--- a/src/gun_http2.erl
+++ b/src/gun_http2.erl
@@ -366,11 +366,6 @@ tunnel_commands([{switch_protocol, Protocol0, ReplyTo}|Tail], Stream=#stream{ref
%% @todo We need to allow other protocol opts in http2_opts too.
{Protocol1, maps:get(Protocol1:opts_name(), Opts, #{})}
end,
- %% When we switch_protocol from socks we must send a gun_tunnel_up message.
- _ = case CurrentProtocol of
- gun_socks -> ReplyTo ! {gun_tunnel_up, self(), stream_ref(State, StreamRef), Protocol:name()};
- _ -> ok
- end,
RealStreamRef = stream_ref(State, StreamRef),
OriginSocket = #{
gun_pid => self(),
@@ -665,7 +660,7 @@ handle_continue(StreamRef, Msg, State, EvHandler, EvHandlerState0)
%% Data that was received and decrypted.
{tls_proxy, ProxyPid, Data} ->
{Commands, EvHandlerState} = Protocol:handle(Data, ProtoState0, EvHandler, EvHandlerState0),
- {tunnel_commands(Commands, Stream, Protocol, TunnelInfo, State), EvHandlerState};
+ {{state, tunnel_commands(Commands, Stream, Protocol, TunnelInfo, State)}, EvHandlerState};
%% @todo What to do about those?
{tls_proxy_closed, ProxyPid} ->
todo;
diff --git a/test/rfc7540_SUITE.erl b/test/rfc7540_SUITE.erl
index 38cbe9f..2ceecdd 100644
--- a/test/rfc7540_SUITE.erl
+++ b/test/rfc7540_SUITE.erl
@@ -435,7 +435,10 @@ connect_http_via_h2c(_) ->
"to an HTTP/1.1 server via a TCP HTTP/2 proxy. (RFC7540 8.3)"),
do_connect_http(<<"http">>, tcp, http, <<"http">>, tcp).
-%% @todo https
+connect_https_via_h2c(_) ->
+ doc("CONNECT can be used to establish a TLS connection "
+ "to an HTTP/1.1 server via a TCP HTTP/2 proxy. (RFC7540 8.3)"),
+ do_connect_http(<<"https">>, tls, http, <<"http">>, tcp).
connect_http_via_h2(_) ->
doc("CONNECT can be used to establish a TCP connection "
@@ -452,11 +455,21 @@ connect_h2c_via_h2c(_) ->
"to an HTTP/2 server via a TCP HTTP/2 proxy. (RFC7540 8.3)"),
do_connect_http(<<"http">>, tcp, http2, <<"http">>, tcp).
+connect_h2_via_h2c(_) ->
+ doc("CONNECT can be used to establish a TLS connection "
+ "to an HTTP/2 server via a TCP HTTP/2 proxy. (RFC7540 8.3)"),
+ do_connect_http(<<"https">>, tls, http2, <<"http">>, tcp).
+
connect_h2c_via_h2(_) ->
doc("CONNECT can be used to establish a TCP connection "
"to an HTTP/2 server via a TLS HTTP/2 proxy. (RFC7540 8.3)"),
do_connect_http(<<"http">>, tcp, http2, <<"https">>, tls).
+connect_h2_via_h2(_) ->
+ doc("CONNECT can be used to establish a TLS connection "
+ "to an HTTP/2 server via a TLS HTTP/2 proxy. (RFC7540 8.3)"),
+ do_connect_http(<<"https">>, tls, http2, <<"https">>, tls).
+
do_origin_fun(http) ->
fun(Parent, Socket, Transport) ->
%% Receive the request-line and headers, parse and send them.