mirror of
https://github.com/ninenines/cowboy.git
synced 2025-07-14 12:20:24 +00:00
Small Markdown fixes to better follow the specs
This commit is contained in:
parent
fb07493279
commit
181d0edc52
2 changed files with 152 additions and 159 deletions
289
CHANGELOG.md
289
CHANGELOG.md
|
@ -4,29 +4,28 @@ CHANGELOG
|
||||||
next
|
next
|
||||||
----
|
----
|
||||||
|
|
||||||
* This release drops R14 compatibility
|
* This release drops R14 compatibility
|
||||||
|
|
||||||
* Add CONTRIBUTING.md file
|
* Add CONTRIBUTING.md file
|
||||||
|
|
||||||
* Use Ranch for connection handling
|
* Use Ranch for connection handling
|
||||||
|
|
||||||
To start listeners you can now use cowboy:start_http/4 for HTTP,
|
To start listeners you can now use cowboy:start_http/4 for HTTP,
|
||||||
and cowboy:start_https/4 for HTTPS. The proper transport and
|
and cowboy:start_https/4 for HTTPS. The proper transport and
|
||||||
protocol modules will be used.
|
protocol modules will be used.
|
||||||
|
|
||||||
* Add a dependency on crypto
|
* Add a dependency on crypto
|
||||||
|
|
||||||
* Remove implicit dependency on inets
|
* Remove implicit dependency on inets
|
||||||
|
|
||||||
* Shorten the name of many modules
|
* Shorten the name of many modules
|
||||||
|
* cowboy_http_protocol becomes cowboy_protocol
|
||||||
|
* cowboy_http_req becomes cowboy_req
|
||||||
|
* cowboy_http_rest becomes cowboy_rest
|
||||||
|
* cowboy_http_static becomes cowboy_static
|
||||||
|
* cowboy_http_websocket becomes cowboy_websocket
|
||||||
|
|
||||||
* cowboy_http_protocol becomes cowboy_protocol.
|
* Introduce the cowboy_req:req() opaque type
|
||||||
* cowboy_http_req becomes cowboy_req.
|
|
||||||
* cowboy_http_rest becomes cowboy_rest.
|
|
||||||
* cowboy_http_static becomes cowboy_static.
|
|
||||||
* cowboy_http_websocket becomes cowboy_websocket.
|
|
||||||
|
|
||||||
* Introduce the cowboy_req:req() opaque type
|
|
||||||
|
|
||||||
The include/http.hrl file was removed. Users are expected to use
|
The include/http.hrl file was removed. Users are expected to use
|
||||||
the cowboy_req API to access or modify the Req object.
|
the cowboy_req API to access or modify the Req object.
|
||||||
|
@ -34,101 +33,95 @@ next
|
||||||
This required a lot of changes so cleanup and optimization were
|
This required a lot of changes so cleanup and optimization were
|
||||||
performed where possible.
|
performed where possible.
|
||||||
|
|
||||||
* Add many cowboy_req functions
|
* Add many cowboy_req functions
|
||||||
|
* cowboy_req:delete_resp_header/2 deletes a previously set resp header
|
||||||
|
* cowboy_req:set_meta/3 sets metadata in the Req object
|
||||||
|
* cowboy_req:to_list/1 converts the Req object to a list of key/values
|
||||||
|
* cowboy_req:fragment/1 returns the request URL fragment
|
||||||
|
* cowboy_req:host_url/1 returns the request URL without the path or qs
|
||||||
|
* cowboy_req:url/1 returns the full request URL
|
||||||
|
|
||||||
* cowboy_req:delete_resp_header/2 deletes a previously set resp header.
|
* Rename or drop many cowboy_req functions
|
||||||
* cowboy_req:set_meta/3 sets metadata in the Req object.
|
* Replace cowboy_req:host/1 with cowboy_req:raw_host/1
|
||||||
* cowboy_req:to_list/1 converts the Req object to a list of key/values.
|
* Replace cowboy_req:path/1 with cowboy_req:raw_path/1
|
||||||
* cowboy_req:fragment/1 returns the request URL fragment.
|
* cowboy_req:raw_qs/1 becomes cowboy_req:qs/1
|
||||||
* cowboy_req:host_url/1 returns the request URL without the path or qs.
|
|
||||||
* cowboy_req:url/1 returns the full request URL.
|
|
||||||
|
|
||||||
* Rename or drop many cowboy_req functions
|
* Change the signature of many cowboy_req functions
|
||||||
|
* parse_header now returns {ok, any(), Req} instead of {any(), Req}
|
||||||
* Replace cowboy_req:host/1 with cowboy_req:raw_host/1.
|
* body_qs now returns {ok, QsVals, Req} instead of {QsVals, Req}
|
||||||
* Replace cowboy_req:path/1 with cowboy_req:raw_path/1.
|
* multipart_data now returns {headers, Headers, Req} instead of
|
||||||
* cowboy_req:raw_qs/1 becomes cowboy_req:qs/1.
|
|
||||||
|
|
||||||
* Change the signature of many cowboy_req functions
|
|
||||||
|
|
||||||
* parse_header now returns {ok, any(), Req} instead of {any(), Req}.
|
|
||||||
* body_qs now returns {ok, QsVals, Req} instead of {QsVals, Req}.
|
|
||||||
* multipart_data now returns {headers, Headers, Req} instead of
|
|
||||||
{{headers, Headers}, Req} and {body, Body, Req} instead of
|
{{headers, Headers}, Req} and {body, Body, Req} instead of
|
||||||
{{body, Body}, Req}.
|
{{body, Body}, Req}
|
||||||
* set_resp_* functions now return Req instead of {ok, Req}.
|
* set_resp_* functions now return Req instead of {ok, Req}
|
||||||
|
|
||||||
* Fix consistency issues caused by erlang:decode_packet/3
|
* Fix consistency issues caused by erlang:decode_packet/3
|
||||||
|
* The method is now always a case sensitive binary string
|
||||||
|
* Note that standard method names are uppercase (e.g. <<"GET">>)
|
||||||
|
* Header names are now always lowercase binary string
|
||||||
|
|
||||||
* The method is now always a case sensitive binary string.
|
* The max_line_length cowboy_protocol option was replaced by 3 new options:
|
||||||
* Note that standard method names are uppercase (e.g. <<"GET">>).
|
* max_request_line_length, defaults to 4096 bytes
|
||||||
* Header names are now always lowercase binary string.
|
* max_header_name_length, defaults to 64 bytes
|
||||||
|
* max_header_value_length, defaults to 4096 bytes
|
||||||
|
|
||||||
* The max_line_length cowboy_protocol option was replaced by 3 new options:
|
* Add max_headers option, limiting the number of headers; defaults to 100
|
||||||
|
|
||||||
* max_request_line_length, defaults to 4096 bytes
|
* Enhance the websocket API
|
||||||
* max_header_name_length, defaults to 64 bytes
|
* Change a websocket error from {error, protocol} to {error, badframe}
|
||||||
* max_header_value_length, defaults to 4096 bytes
|
* Allow websocket handlers to reply more than one frame
|
||||||
|
* Check for errors when calling Transport:send/2 to avoid crashes
|
||||||
|
* Add close, {close, Payload}, ping, pong frame types for replies
|
||||||
|
|
||||||
* Add max_headers option, limiting the number of headers; defaults to 100
|
* Use -callback in behaviours
|
||||||
|
|
||||||
* Enhance the websocket API
|
* Add cowboy_protocol:onrequest_fun/0 and :onresponse_fun/0 types
|
||||||
|
|
||||||
* Change a websocket error from {error, protocol} to {error, badframe}
|
* Add the body data to onresponse_fun/0 callback
|
||||||
* Allow websocket handlers to reply more than one frame
|
|
||||||
* Check for errors when calling Transport:send/2 to avoid crashes
|
|
||||||
* Add close, {close, Payload}, ping, pong frame types for replies
|
|
||||||
|
|
||||||
* Use -callback in behaviours
|
* Remove the urldecode cowboy_protocol option
|
||||||
|
|
||||||
* Add cowboy_protocol:onrequest_fun/0 and :onresponse_fun/0 types
|
* Isolate multipart from body reading to fix an issue
|
||||||
|
|
||||||
* Add the body data to onresponse_fun/0 callback
|
* Avoid a duplicate HTTP reply in cowboy_websocket:upgrade_error/1
|
||||||
|
|
||||||
* Remove the urldecode cowboy_protocol option
|
* Fix use of the Vary header, was named Variances in the previous code
|
||||||
|
|
||||||
* Isolate multipart from body reading to fix an issue
|
* Improve returned status code for HTTP and REST
|
||||||
|
|
||||||
* Avoid a duplicate HTTP reply in cowboy_websocket:upgrade_error/1
|
* Fix charsets_provided return value
|
||||||
|
|
||||||
* Fix use of the Vary header, was named Variances in the previous code
|
* Allow passing {M, F} for the mimetype function to cowboy_static
|
||||||
|
|
||||||
* Improve returned status code for HTTP and REST
|
* Can now upgrade protocols with {upgrade, protocol, P, Req, Opts}
|
||||||
|
|
||||||
* Fix charsets_provided return value
|
* Cowboy now only expects universal time, never local time
|
||||||
|
|
||||||
* Allow passing {M, F} for the mimetype function to cowboy_static
|
* Many, many optimizations for the most critical code path
|
||||||
|
|
||||||
* Can now upgrade protocols with {upgrade, protocol, P, Req, Opts}
|
|
||||||
|
|
||||||
* Cowboy now only expects universal time, never local time
|
|
||||||
|
|
||||||
* Many, many optimizations for the most critical code path
|
|
||||||
|
|
||||||
0.6.1
|
0.6.1
|
||||||
-----
|
-----
|
||||||
|
|
||||||
* Add hello_world, rest_hello_world, chunked_hello_world,
|
* Add hello_world, rest_hello_world, chunked_hello_world,
|
||||||
echo_get, echo_post and static examples.
|
echo_get, echo_post and static examples.
|
||||||
|
|
||||||
* Add support for the "Expect: 100-continue" header.
|
* Add support for the "Expect: 100-continue" header.
|
||||||
|
|
||||||
* Keep the original 'Host' header value instead of modifying it.
|
* Keep the original 'Host' header value instead of modifying it.
|
||||||
|
|
||||||
* Fix use of parsed headers cache.
|
* Fix use of parsed headers cache.
|
||||||
|
|
||||||
* REST: fix the matching of charsets.
|
* REST: fix the matching of charsets.
|
||||||
|
|
||||||
* REST: allow <<"type/subtype">> format for content_types_accepted.
|
* REST: allow <<"type/subtype">> format for content_types_accepted.
|
||||||
|
|
||||||
* Improve typespecs.
|
* Improve typespecs.
|
||||||
|
|
||||||
0.6.0
|
0.6.0
|
||||||
-----
|
-----
|
||||||
|
|
||||||
* Add multipart support
|
* Add multipart support
|
||||||
|
|
||||||
* Add chunked transfer decoding support
|
* Add chunked transfer decoding support
|
||||||
|
|
||||||
Done by reworking the body reading API. Now all the body
|
Done by reworking the body reading API. Now all the body
|
||||||
reading goes through the cowboy_http_req:stream_body/1
|
reading goes through the cowboy_http_req:stream_body/1
|
||||||
|
@ -136,14 +129,14 @@ next
|
||||||
Transfer-Encoding and the Content-Encoding, returning
|
Transfer-Encoding and the Content-Encoding, returning
|
||||||
properly decoded data ready for consumption.
|
properly decoded data ready for consumption.
|
||||||
|
|
||||||
* Add fragmented websocket messages support
|
* Add fragmented websocket messages support
|
||||||
|
|
||||||
Properly tested by the addition of the Autobahn websocket
|
Properly tested by the addition of the Autobahn websocket
|
||||||
test suite to our toolbox. All tests pass except a few
|
test suite to our toolbox. All tests pass except a few
|
||||||
related to UTF-8 handling, as Cowboy does no checks on that
|
related to UTF-8 handling, as Cowboy does no checks on that
|
||||||
end at this point.
|
end at this point.
|
||||||
|
|
||||||
* Add 'onrequest' and 'onresponse' hooks
|
* Add 'onrequest' and 'onresponse' hooks
|
||||||
|
|
||||||
The first can be used for all the special cases you may have
|
The first can be used for all the special cases you may have
|
||||||
that can't be dealt with otherwise. It's also pretty good for
|
that can't be dealt with otherwise. It's also pretty good for
|
||||||
|
@ -152,76 +145,76 @@ next
|
||||||
The second can be used for logging errors or replacing error
|
The second can be used for logging errors or replacing error
|
||||||
pages, amongst others.
|
pages, amongst others.
|
||||||
|
|
||||||
* Add cowboy:get_protocol_options/1 and cowboy:set_protocol_options/2
|
* Add cowboy:get_protocol_options/1 and cowboy:set_protocol_options/2
|
||||||
|
|
||||||
These functions allow for retrieving a listener's protocol options,
|
These functions allow for retrieving a listener's protocol options,
|
||||||
and for modifying them while the listener is running. This is
|
and for modifying them while the listener is running. This is
|
||||||
most useful to upgrade the dispatch list. The upgrade applies
|
most useful to upgrade the dispatch list. The upgrade applies
|
||||||
to all the future connections.
|
to all the future connections.
|
||||||
|
|
||||||
* Add the sockname/1 function to TCP and SSL transports
|
* Add the sockname/1 function to TCP and SSL transports
|
||||||
|
|
||||||
* Improve SSL transport support
|
* Improve SSL transport support
|
||||||
|
|
||||||
Add support for specifying the ciphers. Add CA support. Make
|
Add support for specifying the ciphers. Add CA support. Make
|
||||||
specifying the password optional.
|
specifying the password optional.
|
||||||
|
|
||||||
* Add new HTTP status codes from RFC 6585
|
* Add new HTTP status codes from RFC 6585
|
||||||
|
|
||||||
* Add a 'file' option to cowboy_http_static
|
* Add a 'file' option to cowboy_http_static
|
||||||
|
|
||||||
This allows for mapping /folder/ paths to a /folder/index.html file.
|
This allows for mapping /folder/ paths to a /folder/index.html file.
|
||||||
|
|
||||||
* Add the '*' catch all Content-Type for REST
|
* Add the '*' catch all Content-Type for REST
|
||||||
|
|
||||||
* Add {halt, Req, State} as a possible return value for REST
|
* Add {halt, Req, State} as a possible return value for REST
|
||||||
|
|
||||||
* Add absolute URI support for requests
|
* Add absolute URI support for requests
|
||||||
|
|
||||||
* Add cowboy_http:x_www_form_urlencoded/2
|
* Add cowboy_http:x_www_form_urlencoded/2
|
||||||
|
|
||||||
* Various REST bug fixes
|
* Various REST bug fixes
|
||||||
|
|
||||||
* Do not send chunked replies for HTTP/1.0 connections
|
* Do not send chunked replies for HTTP/1.0 connections
|
||||||
|
|
||||||
* Fix a DST bug in the cookies code
|
* Fix a DST bug in the cookies code
|
||||||
|
|
||||||
* Fix a bug with setting cookie values containing slashes
|
* Fix a bug with setting cookie values containing slashes
|
||||||
|
|
||||||
* Fix a small timer leak when using loop/websocket timeouts
|
* Fix a small timer leak when using loop/websocket timeouts
|
||||||
|
|
||||||
* Make charset and media type parsing more relaxed
|
* Make charset and media type parsing more relaxed
|
||||||
|
|
||||||
This is to accomodate some widely used broken clients.
|
This is to accomodate some widely used broken clients.
|
||||||
|
|
||||||
* Make error messages more readable
|
* Make error messages more readable
|
||||||
|
|
||||||
* Fix and improve type specifications
|
* Fix and improve type specifications
|
||||||
|
|
||||||
* Fix a bug preventing documentation from being generated
|
* Fix a bug preventing documentation from being generated
|
||||||
|
|
||||||
* Small improvements to the documentation
|
* Small improvements to the documentation
|
||||||
|
|
||||||
* Rework the HTTP test suite
|
* Rework the HTTP test suite
|
||||||
|
|
||||||
The suite now uses an integrated Cowboy HTTP client. The client
|
The suite now uses an integrated Cowboy HTTP client. The client
|
||||||
is currently experimental and shouldn't be used.
|
is currently experimental and shouldn't be used.
|
||||||
|
|
||||||
* Add many many tests.
|
* Add many many tests.
|
||||||
|
|
||||||
0.4.0
|
0.4.0
|
||||||
-----
|
-----
|
||||||
|
|
||||||
* Set the cowboy_listener process priority to high
|
* Set the cowboy_listener process priority to high
|
||||||
|
|
||||||
As it is the central process used by all incoming requests
|
As it is the central process used by all incoming requests
|
||||||
we need to set its priority to high to avoid timeouts that
|
we need to set its priority to high to avoid timeouts that
|
||||||
would happen otherwise when reaching a huge number of
|
would happen otherwise when reaching a huge number of
|
||||||
concurrent requests.
|
concurrent requests.
|
||||||
|
|
||||||
* Add cowboy:child_spec/6 for embedding in other applications
|
* Add cowboy:child_spec/6 for embedding in other applications
|
||||||
|
|
||||||
* Add cowboy_http_rest, an experimental REST protocol support
|
* Add cowboy_http_rest, an experimental REST protocol support
|
||||||
|
|
||||||
Based on the Webmachine diagram and documentation. It is a
|
Based on the Webmachine diagram and documentation. It is a
|
||||||
new implementation, not a port, therefore a few changes have
|
new implementation, not a port, therefore a few changes have
|
||||||
|
@ -232,7 +225,7 @@ next
|
||||||
resource documentation and the comments found in cowboy_http_rest,
|
resource documentation and the comments found in cowboy_http_rest,
|
||||||
which itself should be fairly easy to read and understand.
|
which itself should be fairly easy to read and understand.
|
||||||
|
|
||||||
* Add cowboy_http_static, an experimental static file handler
|
* Add cowboy_http_static, an experimental static file handler
|
||||||
|
|
||||||
Makes use of the aforementioned REST protocol support to
|
Makes use of the aforementioned REST protocol support to
|
||||||
deliver files with proper content type and cache headers.
|
deliver files with proper content type and cache headers.
|
||||||
|
@ -241,22 +234,22 @@ next
|
||||||
appropriate, which currently requires the VM to be started
|
appropriate, which currently requires the VM to be started
|
||||||
with the +A option defined, else errors may randomly appear.
|
with the +A option defined, else errors may randomly appear.
|
||||||
|
|
||||||
* Add cowboy_bstr module for binary strings related functions
|
* Add cowboy_bstr module for binary strings related functions
|
||||||
|
|
||||||
* Add cowboy_http module for HTTP parsing functions
|
* Add cowboy_http module for HTTP parsing functions
|
||||||
|
|
||||||
This module so far contains various functions for HTTP header
|
This module so far contains various functions for HTTP header
|
||||||
parsing along with URL encoding and decoding.
|
parsing along with URL encoding and decoding.
|
||||||
|
|
||||||
* Remove quoted from the default dependencies
|
* Remove quoted from the default dependencies
|
||||||
|
|
||||||
This should make Cowboy much easier to compile and use by default.
|
This should make Cowboy much easier to compile and use by default.
|
||||||
It is of course still possible to use quoted as your URL decoding
|
It is of course still possible to use quoted as your URL decoding
|
||||||
library in Cowboy thanks to the newly added urldecode option.
|
library in Cowboy thanks to the newly added urldecode option.
|
||||||
|
|
||||||
* Fix supervisor spec for non dynamic modules to allow upgrades to complete
|
* Fix supervisor spec for non dynamic modules to allow upgrades to complete
|
||||||
|
|
||||||
* Add cowboy:accept_ack/1 for a cleaner handling of the shoot message
|
* Add cowboy:accept_ack/1 for a cleaner handling of the shoot message
|
||||||
|
|
||||||
Before, when the listener accepted a connection, the newly created
|
Before, when the listener accepted a connection, the newly created
|
||||||
process was waiting for a message containing the atom 'shoot' before
|
process was waiting for a message containing the atom 'shoot' before
|
||||||
|
@ -266,81 +259,81 @@ next
|
||||||
contents of the message have changed (and could change again in the
|
contents of the message have changed (and could change again in the
|
||||||
distant future).
|
distant future).
|
||||||
|
|
||||||
* Update binary parsing expressions to avoid hype crashes
|
* Update binary parsing expressions to avoid hype crashes
|
||||||
|
|
||||||
More specifically, /bits was replaced by /binary.
|
More specifically, /bits was replaced by /binary.
|
||||||
|
|
||||||
* Rename the type cowboy_dispatcher:path_tokens/0 to tokens/0
|
* Rename the type cowboy_dispatcher:path_tokens/0 to tokens/0
|
||||||
|
|
||||||
* Remove the cowboy_clock:date/0, time/0 and datetime/0 types
|
* Remove the cowboy_clock:date/0, time/0 and datetime/0 types
|
||||||
|
|
||||||
The calendar module exports those same types properly since R14B04.
|
The calendar module exports those same types properly since R14B04.
|
||||||
|
|
||||||
* Add cacertfile configuration option to cowboy_ssl_transport
|
* Add cacertfile configuration option to cowboy_ssl_transport
|
||||||
|
|
||||||
* Add cowboy_protocol behaviour
|
* Add cowboy_protocol behaviour
|
||||||
|
|
||||||
* Remove -Wbehaviours dialyzer option unavailable in R15B
|
* Remove -Wbehaviours dialyzer option unavailable in R15B
|
||||||
|
|
||||||
* Many tests and specs improvements
|
* Many tests and specs improvements
|
||||||
|
|
||||||
### cowboy_http_req
|
### cowboy_http_req
|
||||||
|
|
||||||
* Fix a crash when reading the request body
|
* Fix a crash when reading the request body
|
||||||
|
|
||||||
* Add parse_header/2 and parse_header/3
|
* Add parse_header/2 and parse_header/3
|
||||||
|
|
||||||
The following headers can now be semantically parsed: Connection, Accept,
|
The following headers can now be semantically parsed: Connection, Accept,
|
||||||
Accept-Charset, Accept-Encoding, Accept-Language, Content-Length,
|
Accept-Charset, Accept-Encoding, Accept-Language, Content-Length,
|
||||||
Content-Type, If-Match, If-None-Match, If-Modified-Since,
|
Content-Type, If-Match, If-None-Match, If-Modified-Since,
|
||||||
If-Unmodified-Since, Upgrade
|
If-Unmodified-Since, Upgrade
|
||||||
|
|
||||||
* Add set_resp_header/3, set_resp_cookie/4 and set_resp_body/2
|
* Add set_resp_header/3, set_resp_cookie/4 and set_resp_body/2
|
||||||
|
|
||||||
These functions allow handlers to set response headers and body
|
These functions allow handlers to set response headers and body
|
||||||
without having to reply directly.
|
without having to reply directly.
|
||||||
|
|
||||||
* Add set_resp_body_fun/3
|
* Add set_resp_body_fun/3
|
||||||
|
|
||||||
This function allows handlers to stream the body of the response
|
This function allows handlers to stream the body of the response
|
||||||
using the given fun. The size of the response must be known beforehand.
|
using the given fun. The size of the response must be known beforehand.
|
||||||
|
|
||||||
* Add transport/1 to obtain the transport and socket for the request
|
* Add transport/1 to obtain the transport and socket for the request
|
||||||
|
|
||||||
This allows handlers to have low-level socket access in those cases
|
This allows handlers to have low-level socket access in those cases
|
||||||
where they do need it, like when streaming a response body with
|
where they do need it, like when streaming a response body with
|
||||||
set_resp_body_fun/3.
|
set_resp_body_fun/3.
|
||||||
|
|
||||||
* Add peer_addr/1
|
* Add peer_addr/1
|
||||||
|
|
||||||
This function tries to guess the real peer IP based on the HTTP
|
This function tries to guess the real peer IP based on the HTTP
|
||||||
headers received.
|
headers received.
|
||||||
|
|
||||||
* Add meta/2 and meta/3 to save useful protocol information
|
* Add meta/2 and meta/3 to save useful protocol information
|
||||||
|
|
||||||
Currently used to save the Websocket protocol version currently used,
|
Currently used to save the Websocket protocol version currently used,
|
||||||
and to save request information in the REST protocol handler.
|
and to save request information in the REST protocol handler.
|
||||||
|
|
||||||
* Add reply/2 and reply/3 aliases to reply/4
|
* Add reply/2 and reply/3 aliases to reply/4
|
||||||
|
|
||||||
* Add upgrade_reply/3 for protocol upgrades
|
* Add upgrade_reply/3 for protocol upgrades
|
||||||
|
|
||||||
### cowboy_http_protocol
|
### cowboy_http_protocol
|
||||||
|
|
||||||
* Add the {urldecode, fun urldecode/2} option
|
* Add the {urldecode, fun urldecode/2} option
|
||||||
|
|
||||||
Added when quoted was removed from the default build. Can be used to
|
Added when quoted was removed from the default build. Can be used to
|
||||||
tell Cowboy to use quoted or any other URL decoding routine.
|
tell Cowboy to use quoted or any other URL decoding routine.
|
||||||
|
|
||||||
* Add the max_keepalive option
|
* Add the max_keepalive option
|
||||||
|
|
||||||
* Add the max_line_length option
|
* Add the max_line_length option
|
||||||
|
|
||||||
* Allow HTTP handlers to stop during init/3
|
* Allow HTTP handlers to stop during init/3
|
||||||
|
|
||||||
To do so they can return {shutdown, Req, State}.
|
To do so they can return {shutdown, Req, State}.
|
||||||
|
|
||||||
* Add loops support in HTTP handlers for proper long-polling support
|
* Add loops support in HTTP handlers for proper long-polling support
|
||||||
|
|
||||||
A loop can be entered by returning either of {loop, Req, State},
|
A loop can be entered by returning either of {loop, Req, State},
|
||||||
{loop, Req, State, hibernate}, {loop, Req, State, Timeout} or
|
{loop, Req, State, hibernate}, {loop, Req, State, Timeout} or
|
||||||
|
@ -362,60 +355,60 @@ next
|
||||||
Like in OTP, you do need to set timeout and hibernate again when
|
Like in OTP, you do need to set timeout and hibernate again when
|
||||||
returning from info/3 to enable them until the next call.
|
returning from info/3 to enable them until the next call.
|
||||||
|
|
||||||
* Fix the sending of 500 errors when handlers crash
|
* Fix the sending of 500 errors when handlers crash
|
||||||
|
|
||||||
Now we send an error response when no response has been sent,
|
Now we send an error response when no response has been sent,
|
||||||
and do nothing more than close the connection if anything
|
and do nothing more than close the connection if anything
|
||||||
did get sent.
|
did get sent.
|
||||||
|
|
||||||
* Fix a crash when the server is sent HTTP responses
|
* Fix a crash when the server is sent HTTP responses
|
||||||
|
|
||||||
* Fix HTTP timeouts handling when the Request-Line wasn't received
|
* Fix HTTP timeouts handling when the Request-Line wasn't received
|
||||||
|
|
||||||
* Fix the handling of the max number of empty lines between requests
|
* Fix the handling of the max number of empty lines between requests
|
||||||
|
|
||||||
* Fix the handling of HEAD requests
|
* Fix the handling of HEAD requests
|
||||||
|
|
||||||
* Fix HTTP/1.0 Host header handling
|
* Fix HTTP/1.0 Host header handling
|
||||||
|
|
||||||
* Reply status 400 if we receive an unexpected value or error for headers
|
* Reply status 400 if we receive an unexpected value or error for headers
|
||||||
|
|
||||||
* Properly close when the application sends "Connection: close" header
|
* Properly close when the application sends "Connection: close" header
|
||||||
|
|
||||||
* Close HTTP connections on all errors
|
* Close HTTP connections on all errors
|
||||||
|
|
||||||
* Improve the error message for HTTP handlers
|
* Improve the error message for HTTP handlers
|
||||||
|
|
||||||
### cowboy_http_websocket
|
### cowboy_http_websocket
|
||||||
|
|
||||||
* Add websocket support for all versions up to RFC 6455
|
* Add websocket support for all versions up to RFC 6455
|
||||||
|
|
||||||
Support isn't perfect yet according to the specifications, but
|
Support isn't perfect yet according to the specifications, but
|
||||||
is working against all currently known client implementations.
|
is working against all currently known client implementations.
|
||||||
|
|
||||||
* Allow websocket_init/3 to return with the hibernate option set
|
* Allow websocket_init/3 to return with the hibernate option set
|
||||||
|
|
||||||
* Add {shutdown, Req} return value to websocket_init/3 to fail an upgrade
|
* Add {shutdown, Req} return value to websocket_init/3 to fail an upgrade
|
||||||
|
|
||||||
* Fix websocket timeout handling
|
* Fix websocket timeout handling
|
||||||
|
|
||||||
* Fix error messages: wrong callback name was reported on error
|
* Fix error messages: wrong callback name was reported on error
|
||||||
|
|
||||||
* Fix byte-by-byte websocket handling
|
* Fix byte-by-byte websocket handling
|
||||||
|
|
||||||
* Fix an issue when using hixie-76 with certain proxies
|
* Fix an issue when using hixie-76 with certain proxies
|
||||||
|
|
||||||
* Fix a crash in the hixie-76 handshake
|
* Fix a crash in the hixie-76 handshake
|
||||||
|
|
||||||
* Fix the handshake when SSL is used on port 443
|
* Fix the handshake when SSL is used on port 443
|
||||||
|
|
||||||
* Fix a crash in the handshake when cowboy_http_req:compact/1 is used
|
* Fix a crash in the handshake when cowboy_http_req:compact/1 is used
|
||||||
|
|
||||||
* Fix handshake when a query string is present
|
* Fix handshake when a query string is present
|
||||||
|
|
||||||
* Fix a crash when the Upgrade header contains more than one token
|
* Fix a crash when the Upgrade header contains more than one token
|
||||||
|
|
||||||
0.2.0
|
0.2.0
|
||||||
-----
|
-----
|
||||||
|
|
||||||
* Initial release.
|
* Initial release.
|
||||||
|
|
22
ROADMAP.md
22
ROADMAP.md
|
@ -6,7 +6,7 @@ list of planned changes and work to be done on the Cowboy
|
||||||
server. It is non-exhaustive and subject to change. Items
|
server. It is non-exhaustive and subject to change. Items
|
||||||
are not ordered.
|
are not ordered.
|
||||||
|
|
||||||
* Write more, better examples.
|
* Write more, better examples.
|
||||||
|
|
||||||
The first step would be to port misultin's examples
|
The first step would be to port misultin's examples
|
||||||
to Cowboy. Then these examples could be completed with
|
to Cowboy. Then these examples could be completed with
|
||||||
|
@ -20,12 +20,12 @@ are not ordered.
|
||||||
Examples should be commented. They may or may not be
|
Examples should be commented. They may or may not be
|
||||||
used for writing the user guides.
|
used for writing the user guides.
|
||||||
|
|
||||||
* Write user guides.
|
* Write user guides.
|
||||||
|
|
||||||
We currently have good API documentation, but no step
|
We currently have good API documentation, but no step
|
||||||
by step user guides.
|
by step user guides.
|
||||||
|
|
||||||
* Write more, better tests.
|
* Write more, better tests.
|
||||||
|
|
||||||
Amongst the areas less tested there is protocol upgrades
|
Amongst the areas less tested there is protocol upgrades
|
||||||
and the REST handler.
|
and the REST handler.
|
||||||
|
@ -37,7 +37,7 @@ are not ordered.
|
||||||
While eunit and ct tests are fine, some parts of the
|
While eunit and ct tests are fine, some parts of the
|
||||||
code could benefit from PropEr tests.
|
code could benefit from PropEr tests.
|
||||||
|
|
||||||
* Continuous performance testing.
|
* Continuous performance testing.
|
||||||
|
|
||||||
Initially dubbed the Horse project, Cowboy could benefit
|
Initially dubbed the Horse project, Cowboy could benefit
|
||||||
from a continuous performance testing tool that would
|
from a continuous performance testing tool that would
|
||||||
|
@ -49,37 +49,37 @@ are not ordered.
|
||||||
Cowboy to other servers and eventually take ideas from
|
Cowboy to other servers and eventually take ideas from
|
||||||
the servers that outperform Cowboy for the task being tested.
|
the servers that outperform Cowboy for the task being tested.
|
||||||
|
|
||||||
* Improve HTTP/1.0 support.
|
* Improve HTTP/1.0 support.
|
||||||
|
|
||||||
Most of the work on Cowboy has been done with HTTP/1.1
|
Most of the work on Cowboy has been done with HTTP/1.1
|
||||||
in mind. But there is still a need for HTTP/1.0 code in
|
in mind. But there is still a need for HTTP/1.0 code in
|
||||||
Cowboy. The server code should be reviewed and tested
|
Cowboy. The server code should be reviewed and tested
|
||||||
to ensure compatibility with remaining HTTP/1.0 products.
|
to ensure compatibility with remaining HTTP/1.0 products.
|
||||||
|
|
||||||
* Complete the work on Websockets.
|
* Complete the work on Websockets.
|
||||||
|
|
||||||
Now that the Autobahn test suite is available (make inttests),
|
Now that the Autobahn test suite is available (make inttests),
|
||||||
we have a definite way to know whether Cowboy's implementation
|
we have a definite way to know whether Cowboy's implementation
|
||||||
of Websockets is right. The work can thus be completed. The
|
of Websockets is right. The work can thus be completed. The
|
||||||
remaining task is proper UTF8 handling.
|
remaining task is proper UTF8 handling.
|
||||||
|
|
||||||
* SPDY support.
|
* SPDY support.
|
||||||
|
|
||||||
While SPDY probably won't be added directly to Cowboy, work
|
While SPDY probably won't be added directly to Cowboy, work
|
||||||
has been started on making Cowboy use SPDY.
|
has been started on making Cowboy use SPDY.
|
||||||
|
|
||||||
* Transport upgrades.
|
* Transport upgrades.
|
||||||
|
|
||||||
Some protocols allow an upgrade from TCP to SSL without
|
Some protocols allow an upgrade from TCP to SSL without
|
||||||
closing the connection. This is currently not possible
|
closing the connection. This is currently not possible
|
||||||
through the Cowboy API.
|
through the Cowboy API.
|
||||||
|
|
||||||
* Resizing the acceptor pool.
|
* Resizing the acceptor pool.
|
||||||
|
|
||||||
We should be able to add more acceptors to a pool but also
|
We should be able to add more acceptors to a pool but also
|
||||||
to remove some of them as needed.
|
to remove some of them as needed.
|
||||||
|
|
||||||
* Simplified dispatch list.
|
* Simplified dispatch list.
|
||||||
|
|
||||||
For convenience purposes, the dispatch list should allow
|
For convenience purposes, the dispatch list should allow
|
||||||
lists instead of binaries. The lists can be converted to
|
lists instead of binaries. The lists can be converted to
|
||||||
|
@ -88,7 +88,7 @@ are not ordered.
|
||||||
There has also been discussion on allowing the dispatch
|
There has also been discussion on allowing the dispatch
|
||||||
list to be hierarchical.
|
list to be hierarchical.
|
||||||
|
|
||||||
* Add Transport:secure/0.
|
* Add Transport:secure/0.
|
||||||
|
|
||||||
Currently Cowboy checks if a connection is secure by
|
Currently Cowboy checks if a connection is secure by
|
||||||
checking if its name is 'ssl'. This isn't a very modular
|
checking if its name is 'ssl'. This isn't a very modular
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue