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