0
Fork 0
mirror of https://github.com/ninenines/cowboy.git synced 2025-07-14 12:20:24 +00:00
Commit graph

521 commits

Author SHA1 Message Date
Loïc Hoguin
bfab8d4b22 Use a single Transport:send/2 call to send the reply if possible
This gives a huge boost in performance when replies are small.
2012-09-26 14:20:29 +02:00
Loïc Hoguin
7481cf9963 Update Ranch to latest commit 2012-09-26 14:20:18 +02:00
Loïc Hoguin
e30c6debdc Remove a '++' use when replying 2012-09-24 04:53:24 +02:00
Loïc Hoguin
3c10d54883 Removal of binary:split from cowboy_dispatcher and small optimizations
The internal host_tokens value now has host tokens in reverse order
compared to before. This allows us to remove one lists:reverse call.
2012-09-24 04:53:12 +02:00
Loïc Hoguin
793d058125 Use binary:match/2 instead of binary:split/2 in cowboy_dispatcher
Didn't replace everything, just the ones that didn't use the
global option. Also removed a couple now useless code paths.
2012-09-24 00:54:05 +02:00
Loïc Hoguin
9d4f4ec9c7 Extract the buffer out of the #state{} in cowboy_protocol
This reduces the number of operations done each time the buffer changes.
2012-09-23 22:41:32 +02:00
Loïc Hoguin
332c274d87 Use binary:match/2 instead of binary:split/2 in cowboy_http
Also fix a bug introduced in a previous commit.
2012-09-23 21:25:54 +02:00
Loïc Hoguin
ff3c5c7f45 Improve state reset between requests 2012-09-23 16:50:44 +02:00
Loïc Hoguin
8a6baac9ad Use binary:match/2 instead of binary:split/2
The former is a BIF while the latter is not.
2012-09-23 16:50:06 +02:00
Loïc Hoguin
981ea359ba Update CHANGELOG 2012-09-21 13:14:25 +02:00
Loïc Hoguin
e27fd5fcb9 Make multipart part headers binary lowercase
Here we do not remove decode_packet yet, we just lowercase the
header name and transform it into a binary if needed, to fix
the consistency issue.
2012-09-21 13:07:51 +02:00
Loïc Hoguin
34021666cb Don't use decode_packet/3 for parsing the headers
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)
2012-09-21 09:18:56 +02:00
Loïc Hoguin
8497c8bbcd Don't use decode_packet/3 for parsing the request-line
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.
2012-09-21 08:54:57 +02:00
Loïc Hoguin
f6791b008a Update CHANGELOG 2012-09-17 14:02:29 +02:00
Loïc Hoguin
c2be7c1920 Add types for onrequest and onresponse funs 2012-09-17 13:57:29 +02:00
Loïc Hoguin
9090cd9765 Replace many proplists:get_value/{2,3} calls by BIFs
Originally suggested by Roberto Ostinelli.
2012-09-17 13:57:29 +02:00
Loïc Hoguin
18be3a8021 Rename cowboy_req:raw_qs/1 to cowboy_req:qs/1 2012-09-17 13:57:29 +02:00
Loïc Hoguin
13b743ba26 Include the eunit file only if TEST is defined 2012-09-17 13:57:29 +02:00
Loïc Hoguin
183bf7f143 Make cowboy_req:req() opaque
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.
2012-09-17 13:57:29 +02:00
Loïc Hoguin
58edd4c35a Add the private get_connection/1 function used by cowboy_protocol
This removes cowboy_protocol's dependency on http.hrl!
2012-09-17 13:57:29 +02:00
Loïc Hoguin
cf0e905c52 Add the private get_buffer/1 function used by cowboy_protocol 2012-09-17 13:57:28 +02:00
Loïc Hoguin
e55ec7d43d Add the private get_resp_state/1 function used by cowboy_protocol 2012-09-17 13:57:28 +02:00
Loïc Hoguin
c1dd5b5176 Add the private set_bindings/4 function used by cowboy_protocol 2012-09-17 13:57:28 +02:00
Loïc Hoguin
5b56dd780b Add the private set_buffer/2 function used by cowboy_protocol 2012-09-17 13:57:28 +02:00
Loïc Hoguin
fc02b7f767 Add the private add_header/3 function used by cowboy_protocol 2012-09-17 13:57:28 +02:00
Loïc Hoguin
905083a7fd Add the private set_connection/2 function used by cowboy_protocol 2012-09-17 13:57:28 +02:00
Loïc Hoguin
350d4ae3f2 Add the private function set_host/4 used by cowboy_protocol 2012-09-17 13:57:28 +02:00
Loïc Hoguin
6dbc1f9ef9 Add a private cowboy_req function to create a Req object
Private means you must not used it. It's meant for internal use.
2012-09-17 13:57:28 +02:00
Loïc Hoguin
c1f5a2acb2 Use cowboy_req:version/1 in cowboy_protocol where applicable
More cleanup towards making cowboy_req:req() opaque.
2012-09-17 13:57:28 +02:00
Loïc Hoguin
82d7e89ea2 Remove http.hrl dependency in cowboy_rest
Only cowboy_protocol remaining now.
2012-09-17 13:57:28 +02:00
Loïc Hoguin
f205d44518 Add a function to lock request responses instead of inlining
Just more cleanup in order to have req() opaque.
2012-09-17 13:57:28 +02:00
Loïc Hoguin
8d5f8db90a Improve consistency of return types for cowboy_req API
The signature of parse_header, body_qs, multipart_data and
the set_resp_* functions has changed.

See the cowboy_req module edoc for more details.
2012-09-17 13:56:58 +02:00
Loïc Hoguin
e13ab806ea Add cowboy_req:delete_resp_header/2
Both requested and better for making Req opaque.
2012-09-16 03:50:56 +02:00
Loïc Hoguin
527477bd4a Introduce cowboy_req:host_url/1 to remove more duplicate code 2012-09-16 01:13:44 +02:00
Loïc Hoguin
736bcd4841 Put the method in cowboy_rest's #state{} 2012-09-15 23:53:30 +02:00
Loïc Hoguin
9ef94fb64e Introduce cowboy_req:set_meta/3 to set request metadata 2012-09-15 22:51:37 +02:00
Loïc Hoguin
f65f7d19a8 Use skip_body directly between requests
There's no need for more complex logic now that we have
the API for it.
2012-09-15 22:24:59 +02:00
Loïc Hoguin
0aaa717575 Remove duplicate code for ensure_response 2012-09-15 22:19:39 +02:00
Loïc Hoguin
27d591180c Add cowboy_req:url/1 to return the full request URL
Use it in cowboy_websocket for hixie76, replacing http by ws.
2012-09-15 22:03:00 +02:00
Loïc Hoguin
cd54214def Avoid a duplicate HTTP reply in cowboy_websocket:upgrade_error/1
Do this by checking whether we received the resp_sent message.
2012-09-15 21:18:53 +02:00
Loïc Hoguin
35ebe0b108 Put socket and transport into cowboy_websocket's #state{}
As part of the work to make cowboy_req:req() opaque.
2012-09-15 21:09:12 +02:00
Loïc Hoguin
bb4bd9ac96 Add a cowboy_req:to_list/1 function
Removes a lot of duplicate code when printing error messages.
2012-09-15 20:33:57 +02:00
Loïc Hoguin
9b5cbb5000 Remove two unneeded Req modifications 2012-09-15 12:56:45 +02:00
Loïc Hoguin
d9e76d59a1 Change type #http_req{} to cowboy_req:req()
This removes cowboy_static's dependency on http.hrl.
2012-09-15 01:31:51 +02:00
Loïc Hoguin
4040a9f72d Separate multipart from body_state 2012-09-15 00:59:49 +02:00
Loïc Hoguin
79839b7bb5 Replace cowboy_req:path/1 with cowboy_req:raw_path/1
The latter is much more useful than the former, which ends up
being removed.
2012-09-10 12:26:04 +02:00
Loïc Hoguin
6fa734b487 Replace cowboy_req:host/1 with cowboy_req:raw_host/1
The latter is much more useful than the former, which ends up
being removed.
2012-09-10 12:25:57 +02:00
Loïc Hoguin
e17e18668d Introduce a cowboy_req:req/0 type
Cleanup the typespecs of the cowboy_req module following this.
2012-08-27 14:27:41 +02:00
Loïc Hoguin
0e3adf1fee Rename cowboy_http_websocket to cowboy_websocket 2012-08-27 14:00:28 +02:00
Loïc Hoguin
f39c001c03 Rename cowboy_http_static to cowboy_static 2012-08-27 13:53:27 +02:00