Cowboy 2.6 greatly refactored the HTTP/2 code, a large part of which was moved to Cowlib and is now used by both the Cowboy server and the Gun client.
A large number of tickets were also closed which resulted in many bugs fixed and many features and options added, although some of them are still experimental.
proxy_header
option. The proxy information can then be found under the proxy_info
key in the Req object.
cowboy_req:stream_body/3
and in the data command in stream handlers. The only caveat is that when using cowboy_compress_h
the sendfile tuples may have to be converted to in-memory data in order to compress them. This is the case for gzip compression.
cowboy_stream_h
and cowboy_compress_h
are now documented.
chunked
option to allow disabling chunked transfer-encoding for HTTP/1.1 connections.
http10_keepalive
option to allow disabling keep-alive for HTTP/1.0 connections.
idle_timeout
option for HTTP/2.
sendfile
option to both HTTP/1.1 and HTTP/2. It allows disabling the sendfile syscall entirely for all connections. It is recommended to disable sendfile when using VirtualBox shared folders.
rate_limited/2
callback to REST handlers.
deflate_opts
option to Websocket handlers that allows configuring deflate options for the permessage-deflate extension.
charset
option to cowboy_static
.
ranges_accepted/2
and range_satisfiable/2
along with the user-specified ProvideRangeCallback/2
.
auto
from ranges_accepted/2
. Cowboy will call the configured ProvideCallback
and then split the output automatically for the ranged response.
cowboy_static
.
{deflate, boolean()}
Websocket handler command to disable permessage-deflate compression temporarily.
compress_threshold
option which allows configuring how much data must be present in a response body to compress it. This only applies to non-streamed bodies at this time.
compress_buffering
option which allows controlling whether some buffering may be done when streaming a response body. Change the default behavior to not buffer to make sure it works by default in all scenarios.
{set_options, map()}
command to stream handlers and Websocket handlers. This can be used to update options on a per-request basis. Allow overriding the idle_timeout
option for both HTTP/1.1 and Websocket, the cowboy_compress_h
options for HTTP/1.1 and HTTP/2 and the chunked
option for HTTP/1.1.
charsets_provided
when it is present in the accept header when using REST handlers.
cowboy_metrics_h
.
cowboy_router
behavior has been documented.
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.