mirror of
https://github.com/ninenines/cowboy.git
synced 2025-07-15 12:40:25 +00:00
56 lines
2 KiB
Text
56 lines
2 KiB
Text
[appendix]
|
|
== Migrating from Cowboy 2.2 to 2.3
|
|
|
|
Cowboy 2.3 focused on making the Cowboy processes behave
|
|
properly according to OTP principles. This version is a
|
|
very good milestone toward that goal and most of everything
|
|
should now work. Release upgrades and a few details will
|
|
be improved in future versions.
|
|
|
|
=== Features added
|
|
|
|
* Add support for all functions from the module `sys`. Note
|
|
that Cowboy currently does not implement the `sys` debugging
|
|
mechanisms as tracing is recommended instead.
|
|
|
|
* Add a `max_frame_size` option for Websocket handlers
|
|
to close the connection when the client attempts to
|
|
send a frame that's too large. It currently defaults
|
|
to `infinity` to avoid breaking existing code but will
|
|
be changed in a future version.
|
|
|
|
* Update Cowlib to 2.2.1.
|
|
|
|
* Add support for the 308 status code and a test suite
|
|
for RFC7538 where it is defined.
|
|
|
|
=== Bugs fixed
|
|
|
|
* Ensure timeout options accept the value `infinity` as
|
|
documented.
|
|
|
|
* Properly reject HTTP/2 requests with an invalid content-length
|
|
header instead of simply crashing.
|
|
|
|
* When switching from HTTP/1.1 to Websocket or user protocols
|
|
all the messages in the mailbox were flushed. Only messages
|
|
specific to `cowboy_http` should now be flushed.
|
|
|
|
* Parsing of the x-forwarded-for header has been corrected.
|
|
It now supports IPv6 addresses both with and without port.
|
|
|
|
* Websocket subprotocol tokens are now parsed in a case
|
|
insensitive manner, according to the spec.
|
|
|
|
* Cookies without values are now allowed. For example `Cookie: foo`.
|
|
|
|
* Colons are now allowed within path segments in routes provided
|
|
to `cowboy_router:compile/1` as long as they are not the first
|
|
character of the path segment.
|
|
|
|
* The `cowboy_req:delete_resp_header/2` function will no longer
|
|
crash when no response header was set before calling it.
|
|
|
|
* A miscount of the output HTTP/2 flow control window has been
|
|
fixed. It prevented sending the response body fully to some
|
|
clients. The issue only affected response bodies sent as iolists.
|