Appendix J. 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.
-
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.
-
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.