Age | Commit message (Collapse) | Author |
|
We now obtain the peer address before creating the Req object.
If an error occurs, then something went wrong, we close the connection
nicely directly.
|
|
|
|
|
|
|
|
Basic HTTP authorization according to RFC 2617 is implemented.
Added an example of its usage with REST handler.
|
|
|
|
Types and code are moved to cowboy_router. The match/3 export
from cowboy_dispatcher isn't available anymore as it is called
internally.
|
|
Reported and fixed over email by Adrian Roe.
|
|
|
|
This makes it similar to the other has_* functions.
|
|
|
|
|
|
This behavior can be enabled with the `compress` protocol option.
See the `compress_response` example for more details.
All tests are now ran with and without compression for both HTTP
and HTTPS.
|
|
This allows streaming a body without knowing the length in advance.
Also allows {stream, StreamFun} response body in the REST code.
|
|
It was added to help with response body streaming functions.
But it was a clumsy solution that we discarded in favor of
passing socket and transport to said function. It was also
very odd compared to the rest of the cowboy_req interface.
If you used this function before, worry not, here's its
proper equivalent.
[Socket, Transport] = cowboy_req:get([socket, transport], Req)
|
|
Before we were required to get the socket and transport ourselves,
now they're passed to the function.
|
|
|
|
This function was badly thought out and would cause more harm
than good if used at all. Recommendation will be for people
who need to limit body length to check it beforehand or when
not possible to use the stream_body API.
|
|
This reverts commit cc65a723d70bb078b048bab81eeb8a4bd7ed39ce.
|
|
|
|
|
|
No more trying to quote, this is still completely broken everywhere.
|
|
Includes:
* cowboy_clock:rfc2109/1 now expects UTC datetime
* Rewrite of the cookie code to cowboy_http
* Removal of cowboy_cookies
* Add type cowboy_req:cookie_opts/0
Cookies should now be set using cowboy_req:set_resp_cookie/3.
Code calling cowboy_cookies directly will need to be updated.
|
|
this can happen when the request parsing fails and onresponse
needs the url, its perfectly possible that the url has not
yet been defined
|
|
|
|
This commit closes #195, closes #199, closes #246.
|
|
As suggested by @yrashk.
|
|
We do not always provide the body however. It is not available
when using chunked replies, or when using set_resp_body_fun.
|
|
|
|
|
|
fix typo in doc
|
|
|
|
This allows inconsistent behavior and is not used enough to be supported.
|
|
They should not be used unless you have a very special need,
which generally involves interacting with the internals of Cowboy.
|
|
Still optimizing the critical path.
Removes cowboy_http:connection_to_atom/1.
|
|
Allows retrieving the request URI fragment (the #fragment part).
|
|
* #state{} changes are avoided where possible
* #state{} is now smaller and use less memory
* the Req object is created only after the whole request is parsed
* parsing makes use of a single binary match context
* external calls are avoided in the critical path
* URL fragment is now extracted properly (retrieval API next commit)
* argument orders to local functions modified to avoid extra operations
* dispatching waits as long as possible before tokenizing host/path
* handler opts are no longer shown in the error messages except in init
The code may not look as beautiful as it was before. But it really
is, for parsing code. The parsing section of the file may be skipped
if your eyes start to burn.
|
|
This gives a huge boost in performance when replies are small.
|
|
|
|
Header names are now binaries. Since header names are case insensitive
they are all converted to lowercase. For example: <<"content-length">>.
The max_line_length option was removed. Three new options have been
added instead:
* max_request_line_length (defaults to 4096)
* max_header_name_length (defaults to 64)
* max_header_value_length (defaults to 4096)
|
|
First step in making all methods and header names binaries to
get rid of many inconsistencies caused by decode_packet/3.
Methods are all binary now. Note that since they are case
sensitive, the usual methods become <<"GET">>, <<"POST">> and so on.
|
|
|
|
|
|
|
|
|
|
Remove http.hrl in the process.
If you feel furious about this change after reaching this commit,
don't worry! You probably just need a few access or modification
functions to be added in cowboy_req for your needs. Problem is,
I don't know these. I'll be very thankful if you can open a ticket
and tell me all about it so the best solution can be swiftly
implemented to make you happy again.
|
|
This removes cowboy_protocol's dependency on http.hrl!
|
|
|
|
|
|
|