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 /Makefile | |
parent | 3ea8395eb8f53a57acb5d3c00b99c70296e7cdbd (diff) | |
download | cowboy-8cb9d242b0a665cada6de8b9a9dfa329e0c06ee9.tar.gz cowboy-8cb9d242b0a665cada6de8b9a9dfa329e0c06ee9.tar.bz2 cowboy-8cb9d242b0a665cada6de8b9a9dfa329e0c06ee9.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 'Makefile')
-rw-r--r-- | Makefile | 23 |
1 files changed, 22 insertions, 1 deletions
@@ -15,9 +15,14 @@ CT_OPTS += -ct_hooks cowboy_ct_hook [] # -boot start_sasl LOCAL_DEPS = crypto DEPS = cowlib ranch -dep_cowlib = git https://github.com/ninenines/cowlib 2.13.0 +dep_cowlib = git https://github.com/ninenines/cowlib master dep_ranch = git https://github.com/ninenines/ranch 1.8.0 +ifeq ($(COWBOY_QUICER),1) +DEPS += quicer +dep_quicer = git https://github.com/emqx/quic main +endif + DOC_DEPS = asciideck TEST_DEPS = $(if $(CI_ERLANG_MK),ci.erlang.mk) ct_helper gun @@ -56,15 +61,31 @@ ifndef FULL CT_SUITES := $(filter-out examples ws_autobahn,$(CT_SUITES)) endif +# Don't run HTTP/3 test suites on Windows. + +ifeq ($(PLATFORM),msys2) +CT_SUITES := $(filter-out rfc9114 rfc9204 rfc9220,$(CT_SUITES)) +endif + # Compile options. ERLC_OPTS += +warn_missing_spec +warn_untyped_record # +bin_opt_info TEST_ERLC_OPTS += +'{parse_transform, eunit_autoexport}' +ifeq ($(COWBOY_QUICER),1) +ERLC_OPTS += -D COWBOY_QUICER=1 +TEST_ERLC_OPTS += -D COWBOY_QUICER=1 +endif + # Generate rebar.config on build. app:: rebar.config +# Fix quicer compilation for HTTP/3. + +autopatch-quicer:: + $(verbose) printf "%s\n" "all: ;" > $(DEPS_DIR)/quicer/c_src/Makefile.erlang.mk + # Dialyze the tests. #DIALYZER_OPTS += --src -r test |