diff options
author | Loïc Hoguin <[email protected]> | 2024-01-29 15:40:26 +0100 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2024-01-29 15:40:26 +0100 |
commit | 2368dc53d0c724f1899aeb2874ba1a763e11f0b8 (patch) | |
tree | 37343cf8386eb4b02a096ac507b2208d84b07b43 /docs/en/cowboy/2.11/guide/migrating_from_2.5.asciidoc | |
parent | c4b13de35093b72a84c8782c0e8b0461d4aeaa13 (diff) | |
download | ninenines.eu-2368dc53d0c724f1899aeb2874ba1a763e11f0b8.tar.gz ninenines.eu-2368dc53d0c724f1899aeb2874ba1a763e11f0b8.tar.bz2 ninenines.eu-2368dc53d0c724f1899aeb2874ba1a763e11f0b8.zip |
Cowboy 2.11
Diffstat (limited to 'docs/en/cowboy/2.11/guide/migrating_from_2.5.asciidoc')
-rw-r--r-- | docs/en/cowboy/2.11/guide/migrating_from_2.5.asciidoc | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/docs/en/cowboy/2.11/guide/migrating_from_2.5.asciidoc b/docs/en/cowboy/2.11/guide/migrating_from_2.5.asciidoc new file mode 100644 index 00000000..5196cc7e --- /dev/null +++ b/docs/en/cowboy/2.11/guide/migrating_from_2.5.asciidoc @@ -0,0 +1,148 @@ +[appendix] +== Migrating from Cowboy 2.5 to 2.6 + +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. + +=== Features added + +* Add support for the PROXY protocol header. + It can be enabled via the `proxy_header` option. + The proxy information can then be found under + the `proxy_info` key in the Req object. + +* Allow using sendfile tuples in `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. + +* The stream handlers `cowboy_stream_h` and + `cowboy_compress_h` are now documented. + +* Add the `chunked` option to allow disabling chunked + transfer-encoding for HTTP/1.1 connections. + +* Add the `http10_keepalive` option to allow disabling + keep-alive for HTTP/1.0 connections. + +* Add the `idle_timeout` option for HTTP/2. + +* Add the `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. + +* Add the `rate_limited/2` callback to REST handlers. + +* Add the `deflate_opts` option to Websocket handlers that + allows configuring deflate options for the + permessage-deflate extension. + +* Add the `charset` option to `cowboy_static`. + +* Add support for the SameSite cookie attribute. + +* Update Ranch to 1.7.0 + +* Update Cowlib to 2.7.0 + +=== Experimental features added + +* Add support for range requests (RFC7233) in REST handlers. + This adds two new callbacks: `ranges_accepted/2` and + `range_satisfiable/2` along with the user-specified + `ProvideRangeCallback/2`. + +* Add automatic handling of range requests to REST handlers + that return the callback `auto` from `ranges_accepted/2`. + Cowboy will call the configured `ProvideCallback` and + then split the output automatically for the ranged response. + +* Enable range requests support in `cowboy_static`. + +* Add the `{deflate, boolean()}` Websocket handler + command to disable permessage-deflate compression + temporarily. + +* Add the `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. + +* Add the `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. + +* Add the `{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. + +=== Bugs fixed + +* Do not send a content-length automatically with + 304 responses. This status code allows a content-length + that corresponds to what would have been sent for a 200 + response, but is never followed by a body. + +* HTTP/2 streams are now terminated once the body + has been sent fully, instead of immediately once + the stop command is returned (by default when the + request process exits). Metrics will therefore + more accurately represent when a stream ended. + +* Terminate connection processes gracefully when the + parent process exists or when sys:terminate/2,3 + is called. + +* Automatically ignore the boundary parameter of multipart + media types when using REST handlers. This is a special + parameter that may change with all requests and cannot + be predicted. + +* Fix parsing of the accept header when it contains charset + parameters. They are case insensitive and will now be + lowercased, like for accept-charset and content-type. + +* Handle the charset parameter using `charsets_provided` + when it is present in the accept header when using + REST handlers. + +* Don't select charsets when the q-value is 0 in REST + handlers. + +* Handle accept-charset headers that include a wildcard + in REST handlers. + +* Only send a charset header when the content-type + negotiated is of type text in REST handlers. + +* Remove the default charset iso-8859-1 from REST + handlers when no other is provided. This has been + removed from the HTTP specifications for a long time. + +* Many cases where a content-type header was sent + unnecessarily in the REST handlers response have + been fixed. + +* Handle error_response commands in `cowboy_metrics_h`. + +* A number of types and function specifications were + fixed or improved. Dialyzer is now run against both + the code and tests to help uncover issues. + +* An undefined `cowboy_router` behavior has been + documented. |