0
Fork 0
mirror of https://github.com/ninenines/cowboy.git synced 2025-07-15 12:40:25 +00:00
Commit graph

1125 commits

Author SHA1 Message Date
Slava Yurin
7ca591a0da Fix Location header
Fix #414
2013-02-09 11:19:25 +07:00
Loïc Hoguin
ae401f7460 Fix crashes when creating the request
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.
2013-02-06 23:32:31 +01:00
Loïc Hoguin
1c5ce11d13 Strip whitespaces when authorization type is unknown 2013-02-06 19:16:06 +01:00
Loïc Hoguin
ecb234693c Merge branch 'expose-to_upper' of git://github.com/dvv/cowboy 2013-02-06 18:52:56 +01:00
Loïc Hoguin
8e1bbc2cbc Merge branch 'no-unicode-uri' of git://github.com/dvv/cowboy 2013-02-06 18:38:13 +01:00
Loïc Hoguin
4e71cd0f14 Merge branch 'master' of git://github.com/tsloughter/cowboy 2013-02-06 18:35:52 +01:00
Tristan Sloughter
29c4508884 add guards on set_resp_body_fun for streamlen and streamfun 2013-02-01 10:41:45 -06:00
Loïc Hoguin
855e9652fa Make sure the peer name is always available 2013-01-30 23:38:51 +01:00
Loïc Hoguin
3c5502bbf7 Fix a new warning found by Dialyzer R16A 2013-01-30 18:23:21 +01:00
Loïc Hoguin
d9b3727a62 Merge branch 'patch-1' of https://github.com/CamShaft/cowboy
Conflicts:
	src/cowboy_rest.erl
2013-01-29 22:33:03 +01:00
Loïc Hoguin
f710ac86f8 Merge branch 'feature_basic_auth' of https://github.com/ivlis/cowboy 2013-01-29 22:20:59 +01:00
Ivan Lisenkov
54c6d3fa3a Implement authorization header parsing
Basic HTTP authorization according to RFC 2617 is implemented.
Added an example of its usage with REST handler.
2013-01-30 00:30:05 +04:00
Tom Burdick
8a798014e9 allow POST rest handling to specify path after accepting content 2013-01-29 13:12:53 -06:00
Loïc Hoguin
a59c5d6e91 Merge branch 'rest_patch' of https://github.com/treetopllc/cowboy 2013-01-29 19:16:45 +01:00
Loïc Hoguin
85d05fff34 Fix chunked streaming of request body and improve speed 2013-01-29 19:12:34 +01:00
Tom Burdick
c4d1ee5547 add patch support to cowboy_rest 2013-01-29 11:34:20 -06:00
Loïc Hoguin
638638a841 Fix {cowboy_req, resp_sent} potentially leaking in loop handlers 2013-01-29 14:35:26 +01:00
Loïc Hoguin
8050f2e0fa Do not attempt to skip the request body on Connection: close 2013-01-29 13:34:22 +01:00
Loïc Hoguin
bdc8342595 Merge branch 'fix/callback_specs' of https://github.com/keynslug/cowboy 2013-01-29 12:11:12 +01:00
Loïc Hoguin
5d8c29ff0f If a binding is reused, we check that values are identical
This is more for consistency than anything.
2013-01-29 00:57:26 +01:00
Loïc Hoguin
c2c333de8a Add the 'function' constraint 2013-01-28 23:39:21 +01:00
Loïc Hoguin
a5a69353f1 Add the 'int' constraint 2013-01-28 19:56:42 +01:00
Loïc Hoguin
a357c49d1b New routing
Ultimately few things change, it's mostly just a nicer syntax and
slightly different expectations. The name of the value `dispatch`
did not change, because the previous dispatch values will now fail
if the code is not updated to using `cowboy_router:compile/1`.

No constraints have been implemented in this commit.
2013-01-28 16:53:09 +01:00
Andrew Majorov
0d93c96b31 Update handler callback specs
There is one another {upgrade, ...} quintuple allowed as the result of
Handler:init call, somewhy not mentioned in the callback specifications.
2013-01-26 02:37:43 +04:00
Vladimir Dronnikov
85fc53be8c Expose uppercase binary converter 2013-01-25 02:41:06 +00:00
Vladimir Dronnikov
05a7fe0e2b Do not transform URIs to Unicode 2013-01-25 02:36:05 +00:00
Loïc Hoguin
68da864aeb Remove cowboy_dispatcher
Types and code are moved to cowboy_router. The match/3 export
from cowboy_dispatcher isn't available anymore as it is called
internally.
2013-01-22 18:26:19 +01:00
Loïc Hoguin
bcb1222df9 Merge branch 'fix_change_state' of https://github.com/nevar/cowboy 2013-01-22 17:30:05 +01:00
Slava Yurin
9aa0e1a58a Fix handler state change in cowboy_rest 2013-01-22 23:14:08 +07:00
Loïc Hoguin
166761483d Do not crash if connection is closed while sending static file 2013-01-22 17:08:32 +01:00
Loïc Hoguin
ca9184f39c Merge branch 'master' of https://github.com/0x00F6/cowboy 2013-01-22 14:43:43 +01:00
0x00F6
ebadc185c1 Make cowboy_static use universal time 2013-01-22 17:41:00 +04:00
Loïc Hoguin
647e95aed1 Replace terminate/2 with terminate/3, adding a Reason
This should have been done a *long* time ago, back when I initially
added Websocket support. This is the first part of two in improving
loop handler support with regards to socket closure.

Reason may include: {normal, shutdown} for the most normal shutdown,
{normal, timeout} for a loop handler timeout shutdown, or {error, _}
if an error occured.
2013-01-22 02:34:18 +01:00
Loïc Hoguin
297ae32af1 Fix cowboy_websocket_handler callback spec 2013-01-22 02:33:06 +01:00
Loïc Hoguin
823a82b8f2 Fix an issue for replies in onresponse mishandling headers
Reported and fixed over email by Adrian Roe.
2013-01-20 19:06:28 +01:00
Loïc Hoguin
9d7f909923 Add missing clause to cowboy_req:has_resp_body/1 2013-01-20 00:58:50 +01:00
Loïc Hoguin
82de4254dd Make cowboy_req:has_body/1 return boolean()
This makes it similar to the other has_* functions.
2013-01-19 17:20:35 +01:00
Loïc Hoguin
09c68ca755 Remove a few old @todo comments 2013-01-18 18:21:28 +01:00
Loïc Hoguin
acd6847d3d Set max_keepalive default to 100 instead of infinity 2013-01-18 18:09:46 +01:00
Loïc Hoguin
1b996794ee Add cowboy_bstr:capitalize_token/1
For optional header name capitalization. See the guide section about it.
2013-01-17 23:37:50 +01:00
Loïc Hoguin
cd680706cd Add cowboy_websocket:close_code/0
Also fixes a warning.
2013-01-17 16:22:05 +01:00
Loïc Hoguin
305e639fef Add Sec-Websocket-Protocol header parsing 2013-01-14 16:29:23 +01:00
Loïc Hoguin
8d69099508 Improve websocket close handling
We now always send a failure reason (bad protocol, bad encoding, etc.)
unless the closure was initiated by the client and it didn't send a
close code.

We now check that the close frames have a payload that is valid UTF-8,
unless they don't have a payload at all.

We now do not crash the process anymore when bad opcodes are sent, or
when the opcode 0 is sent before fragmentation was initiated.

Overall this makes us closer to full compliance with the RFC.
2013-01-14 16:20:33 +01:00
Loïc Hoguin
5dd09737d0 Websocket text frames are now checked for UTF-8 correctness
The autobahntestsuite now passes 100% of the tests. We are
getting close to fully implementing the Websocket RFC.
2013-01-13 00:10:32 +01:00
Loïc Hoguin
cccc0bc475 Unmask websocket frames on the fly and optimize the code
No change in functionality, but this will allow us to validate
that text frames are utf8 without having to receive the frame
entirely.
2013-01-12 22:31:23 +01:00
Loïc Hoguin
71b68d53d9 All frames sent from client to server MUST be masked
Good in theory, but implementations may vary. If something stops
working after this commit we might need some tweaks to support
existing clients.

Please try it and give feedback.
2013-01-12 16:04:35 +01:00
Loïc Hoguin
10e3692fa6 Remove support for Websocket hixie76 draft
It was only used by Safari 5.0.1 and possibly 5.1. Their market share
is dropping as we speak. It was also insecure (disabled in Firefox
for that reason).

This will allow us to make much more efficient and cleaner code for
the rest of the Websocket versions we support (drafts 7 to 17 + RFC),
which are pretty much all versions seen in the wild excluding the
one we're removing here.
2013-01-10 21:58:38 +01:00
Loïc Hoguin
01f57ad65d Add optional automatic response body compression
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.
2013-01-07 22:42:16 +01:00
Loïc Hoguin
a013becc66 Add protection against slowloris vulnerability
This changes the behavior of the `timeout` protocol option to
mean "Time in which the full request line and headers must be
received". The default of 5s should be fine for all normal uses.

This change has no noticeable impact on performance and is thus
enabled by default for everyone. It can be disabled by setting
`timeout` to `infinity` although that is definitely not encouraged.

Inspired by the contribution from @naryl on github.
2013-01-06 19:49:01 +01:00
Loïc Hoguin
faeb37ed80 Add cowboy_req:set_resp_body_fun/2
This allows streaming a body without knowing the length in advance.
Also allows {stream, StreamFun} response body in the REST code.
2013-01-05 23:35:30 +01:00