diff options
author | Loïc Hoguin <[email protected]> | 2020-04-01 18:02:59 +0200 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2020-04-01 18:02:59 +0200 |
commit | a8a26897274c798cb95d3a2e9e8da1215c2da78a (patch) | |
tree | bff75e56a0009b2aedc415f724bebcd31b6d769e | |
parent | bcef70818be1b0fdf5d3e52e9b7c490882218b45 (diff) | |
download | cowboy-a8a26897274c798cb95d3a2e9e8da1215c2da78a.tar.gz cowboy-a8a26897274c798cb95d3a2e9e8da1215c2da78a.tar.bz2 cowboy-a8a26897274c798cb95d3a2e9e8da1215c2da78a.zip |
Fix h2spec "invalid preface sequence" test
Introduce a currently undocumented option to allow disabling
cowboy_http when using a clear listener.
-rw-r--r-- | src/cowboy_clear.erl | 11 | ||||
-rw-r--r-- | test/h2spec_SUITE.erl | 2 |
2 files changed, 12 insertions, 1 deletions
diff --git a/src/cowboy_clear.erl b/src/cowboy_clear.erl index 0af734f..4f3a234 100644 --- a/src/cowboy_clear.erl +++ b/src/cowboy_clear.erl @@ -41,7 +41,16 @@ connection_process(Parent, Ref, Transport, Opts) -> undefined end, {ok, Socket} = ranch:handshake(Ref), - init(Parent, Ref, Socket, Transport, ProxyInfo, Opts, cowboy_http). + %% Use cowboy_http2 directly only when 'http' is missing. + %% Otherwise switch to cowboy_http2 from cowboy_http. + %% + %% @todo Extend this option to cowboy_tls and allow disabling + %% the switch to cowboy_http2 in cowboy_http. Also document it. + Protocol = case maps:get(protocols, Opts, [http2, http]) of + [http2] -> cowboy_http2; + [_|_] -> cowboy_http + end, + init(Parent, Ref, Socket, Transport, ProxyInfo, Opts, Protocol). init(Parent, Ref, Socket, Transport, ProxyInfo, Opts, Protocol) -> _ = case maps:get(connection_type, Opts, supervisor) of diff --git a/test/h2spec_SUITE.erl b/test/h2spec_SUITE.erl index 13beea6..08497e9 100644 --- a/test/h2spec_SUITE.erl +++ b/test/h2spec_SUITE.erl @@ -36,6 +36,8 @@ init_per_suite(Config) -> cowboy_test:init_http(h2spec, #{ env => #{dispatch => init_dispatch()}, max_concurrent_streams => 100, + %% This test suite expects an HTTP/2-only connection. + protocols => [http2], %% Disable the DATA threshold for this test suite. stream_window_data_threshold => 0 }, Config) |