diff options
author | Loïc Hoguin <[email protected]> | 2023-01-31 11:07:31 +0100 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2024-03-26 15:53:48 +0100 |
commit | 8cb9d242b0a665cada6de8b9a9dfa329e0c06ee9 (patch) | |
tree | ae2c323c3825da367e54704ea0b9ad80096059c3 /test/plain_handler_SUITE.erl | |
parent | 3ea8395eb8f53a57acb5d3c00b99c70296e7cdbd (diff) | |
download | cowboy-http3.tar.gz cowboy-http3.tar.bz2 cowboy-http3.zip |
Initial HTTP/3 implementationhttp3
This includes Websocket over HTTP/3.
Since quicer, which provides the QUIC implementation,
is a NIF, Cowboy cannot depend directly on it. In order
to enable QUIC and HTTP/3, users have to set the
COWBOY_QUICER environment variable:
export COWBOY_QUICER=1
In order to run the test suites, the same must be done
for Gun:
export GUN_QUICER=1
HTTP/3 support is currently not available on Windows
due to compilation issues of quicer which have yet to
be looked at or resolved.
HTTP/3 support is also unavailable on the upcoming
OTP-27 due to compilation errors in quicer dependencies.
Once resolved HTTP/3 should work on OTP-27.
Because of how QUIC currently works, it's possible
that streams that get reset after sending a response
do not receive that response. The test suite was
modified to accomodate for that. A future extension
to QUIC will allow us to gracefully reset streams.
This also updates Erlang.mk.
Diffstat (limited to 'test/plain_handler_SUITE.erl')
-rw-r--r-- | test/plain_handler_SUITE.erl | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/test/plain_handler_SUITE.erl b/test/plain_handler_SUITE.erl index cd696df..756c0a6 100644 --- a/test/plain_handler_SUITE.erl +++ b/test/plain_handler_SUITE.erl @@ -39,7 +39,7 @@ init_per_group(Name, Config) -> cowboy_test:init_common_groups(Name, Config, ?MODULE). end_per_group(Name, _) -> - cowboy:stop_listener(Name). + cowboy_test:stop_group(Name). %% Routes. @@ -58,8 +58,15 @@ crash_after_reply(Config) -> Ref = gun:get(ConnPid, "/crash/reply", [ {<<"accept-encoding">>, <<"gzip">>} ]), - {response, fin, 200, _} = gun:await(ConnPid, Ref), - {error, timeout} = gun:await(ConnPid, Ref, 1000), + Protocol = config(protocol, Config), + _ = case gun:await(ConnPid, Ref) of + {response, fin, 200, _} -> + {error, timeout} = gun:await(ConnPid, Ref, 1000); + %% See maybe_h3_error comment for details. + {error, {stream_error, {stream_error, h3_internal_error, _}}} + when Protocol =:= http3 -> + ok + end, gun:close(ConnPid). crash_before_reply(Config) -> |