Cowboy 2.11 contains a variety of new features and bug fixes. Nearly all previously experimental features are now marked as stable, including Websocket over HTTP/2. Included is a fix for an HTTP/2 protocol CVE.
Cowboy 2.11 requires Erlang/OTP 24.0 or greater.
Cowboy is now using GitHub Actions for CI. The main reason for the move is to reduce costs by no longer having to self-host CI runners. The downside is that GitHub runners are less reliable and timing dependent tests are now more likely to fail.
max_cancel_stream_rate
has been added to control the rate of stream cancellation the server will accept. By default Cowboy will accept 500 cancelled streams every 10 seconds.
cowboy_decompress_h
has been added. It allows automatically decompressing incoming gzipped request bodies. It includes options to protect against zip bombs.
enable_connect_protocol
option must be set to true
in order to use Websocket over HTTP/2 for the time being.
request_body
message when data comes in. It mirrors {active, once}
socket modes. This is ideal for loop handlers and is also used internally for HTTP/2 Websocket.
cowboy_static
and cowboy_rest
. Ranged responses can be produced either automatically (for the bytes
unit) or manually. REST flowcharts have been updated with the new callbacks and steps related to handling ranged requests.
reset_idle_timeout_on_send
has been added. When enabled, the idle_timeout
will be reset every time Cowboy sends data to the socket.
hibernate
. Timeouts behave the same as in gen_server
.
generate_etag
callback of REST handlers now accepts undefined
as a return value to allow conditionally generating etags.
cowboy_compress_h
options compress_threshold
and compress_buffering
are no longer considered experimental. They were de facto stable since 2.6 as they already were documented.
cowboy:get_env/2,3
have been added.
set-cookie
header without using cowboy_req:set_resp_cookie/3,4
.
max_cancel_stream_rate
.
send_timeout_close
will work as expected.
max_frame_size_received
. Cowboy currently uses the protocol default but will increase its default in a future release. Until then users are recommended to set the option to ensure larger requests are accepted and processed with acceptable performance.
cowboy_compress_h
stream handler will no longer attempt to compress responses that have an etag
header to avoid caching issues.
cowboy_compress_h
will now always add accept-encoding
to the vary
header as it indicates that responses may be compressed.
trap_exit
process flag when HTTP/1.1 connections upgrade to Websocket.
cowboy_stream
manual pages have been added.
Donate to Loïc Hoguin because his work on Cowboy, Ranch, Gun and Erlang.mk is fantastic:
Recurring payment options are also available via GitHub Sponsors. These funds are used to cover the recurring expenses like food, dedicated servers or domain names.