Prev |  | Next

## Appendix O. 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.

## O.1. 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.

## O.2. 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.

Prev | Up | Next
| Home |