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

724 commits

Author SHA1 Message Date
Loïc Hoguin
2ae5e804fb Weekdays are binaries and not lists
Spotted by devinus on IRC.
2011-11-28 21:18:03 +01:00
Loïc Hoguin
ad87fee0af Fix a websocket test handler that was throwing an unwanted error
The test still worked because we expect the websocket connection
to fail, but it didn't fail exactly the way we wanted it to.
2011-11-28 09:14:07 +01:00
Loïc Hoguin
64a40cb479 Add set_resp_header/3 and set_resp_body/2 to cowboy_http_req
These functions allow to set response headers and body in advance,
before calling any of the reply functions.

Also add has_resp_header/2 and has_resp_body/1 to check if the given
response headers have already been set.
2011-11-28 09:09:41 +01:00
Loïc Hoguin
dcc3d83e31 Fix default parsed values for the Accept and Accept-* headers 2011-11-24 21:35:55 +01:00
Loïc Hoguin
f1c94c40f8 Fix specs for cowboy_http:language_range_ret/3 2011-11-24 21:32:27 +01:00
Loïc Hoguin
a5b47fda8d Merge branch 'content-type' of https://github.com/nox/cowboy 2011-11-10 12:55:00 +01:00
Anthony Ramine
6fa7659dbb Support 'Content-Type' in parse_header/2 2011-11-10 11:53:37 +01:00
Anthony Ramine
b184b3588d Introduce cowboy_http:media_type/2 2011-11-10 11:03:22 +01:00
Anthony Ramine
329b2fa01e Introduce cowboy_http:word/2
Used to parse either a token or a quoted string in parameters values.
2011-11-10 11:03:21 +01:00
Loïc Hoguin
2f27b046d7 Add 'If-Match' and 'If-None-Match' to parse_header/2 2011-11-09 21:41:33 +01:00
Loïc Hoguin
12b9ca3526 Fix reading the request body when Length < byte_size(Buffer) 2011-11-07 19:17:49 +01:00
Loïc Hoguin
6dbe2b2130 Add 'Accept-Language' to cowboy_http_req:parse_header/2 2011-11-07 00:53:19 +01:00
Loïc Hoguin
3e443f0a6c Remove the IS_DIGIT macro 2011-11-05 03:23:21 +01:00
Loïc Hoguin
aba1ea4636 Add 'If-Modified-Since' and 'If-Unmodified-Since' to parse_header/2
Implementing the full HTTP-date type (RFC1123, RFC850, asctime).
2011-11-05 01:49:03 +01:00
Loïc Hoguin
aadd974f06 Merge branch 'parse_header-content-length' of https://github.com/nox/cowboy
Conflicts:
	src/cowboy_http.erl
2011-11-04 12:33:40 +01:00
Anthony Ramine
04bcbc444d Support 'Content-Length' in parse_header/2 2011-11-04 12:21:01 +01:00
Loïc Hoguin
a118f53c74 Remove unneeded whitespaces according to the HTTP spec 2011-11-04 11:58:45 +01:00
Loïc Hoguin
77b3562257 Rename cowboy_http:charset/2 to conneg/2 and use it for Accept-Encoding
Sorry I apparently used an outdated RFC when I was doing this.
2011-11-04 10:38:04 +01:00
Loïc Hoguin
68c1d886e5 Merge branch 'chrome-15' of https://github.com/puzza007/cowboy 2011-11-01 15:55:40 +01:00
Loïc Hoguin
3ce2865d84 Set the cowboy_listener process priority to high
See comment added with it for more information.
2011-11-01 15:53:51 +01:00
Paul Oliver
89752a2769 update record spec for version 13 2011-10-30 11:22:12 +00:00
Loïc Hoguin
774659ec03 Merge branch 'chunk-spec' of https://github.com/puzza007/cowboy 2011-10-30 01:32:40 +02:00
Paul Oliver
bd90df1f5e Fix cowboy_http_req:chunk/2 spec 2011-10-29 15:48:43 +01:00
Loïc Hoguin
d9da5334d2 Merge branch 'supervisor-relup-fix' of https://github.com/smarkets/cowboy 2011-10-28 18:09:09 +02:00
Steven Gravell
1af77d45e3 fix supervisor spec for non dynamic modules
a release upgrade on a vm running cowboy where any other appup
includes an {update, Mod, {advanced, Extra}} instruction will hang
forever due to these child specs being wrong.

The gen_servers should be [Mod] and the non gen_server needs to be []
since there is no callback to handle this.
2011-10-28 16:44:46 +01:00
Loïc Hoguin
4cd825923f Add 'Accept-Charset' to cowboy_http_req:parse_header/2 2011-10-26 20:54:21 +02:00
Loïc Hoguin
819eb219e7 Rename private function quality/2 into qvalue/2 2011-10-26 20:13:36 +02:00
Loïc Hoguin
725e272996 cowboy_http:media_range/2 should expect to not have whitespace before it 2011-10-26 19:41:49 +02:00
Loïc Hoguin
20204fd33e Add 'Accept-Encoding' to cowboy_http_req:parse_header/2 2011-10-26 19:24:49 +02:00
Loïc Hoguin
c605c4fa40 Add 'Accept' header parsing
Rework the cowboy_http_req:parse_header/2 function while I was at it.
2011-10-26 04:07:08 +02:00
Loïc Hoguin
1a839954bb Rewrite list/tokens parsing with an added whitespace function 2011-10-25 10:29:46 +02:00
Loïc Hoguin
6223018212 Merge pull request #79 from athoune/patch-1
Update README.md
2011-10-24 21:37:20 -07:00
Mathieu Lecarme
3ba578d5e4 Update README.md 2011-10-25 00:05:31 +03:00
Loïc Hoguin
30a1d13ae9 Make sure the correct callback name is displayed in websocket errors 2011-10-24 17:06:16 +02:00
Loïc Hoguin
d7eec7d8c3 Merge branch 'chrome-15' of https://github.com/puzza007/cowboy 2011-10-24 16:27:14 +02:00
Paul Oliver
30c3c75bbc Accept Sec-WebSocket-Version: 13 header on Chrome 15 through 17 2011-10-24 15:23:36 +01:00
Loïc Hoguin
f990109af6 We don't need to retrieve the Origin header for hybi-7+ websocket drafts 2011-10-24 10:11:09 +02:00
Loïc Hoguin
c589922ebd Parse Connection header tokens in a case-insensitive manner 2011-10-20 19:04:49 +02:00
Loïc Hoguin
381c178073 Add a cowboy_http_req:upgrade_reply/3 function and use it for websockets
This function doesn't try to add any additional header besides the
Connection: Upgrade header. It also doesn't accept a body.

It should be used for the intermediate reply to an upgrade process,
before the real reply is sent (if any, for example when using TLS).
2011-10-20 14:11:17 +02:00
Loïc Hoguin
d4088e7a46 "websocket" must be treated in a case insensitive manner for upgrades
Fixed according to the websocket draft specs.
2011-10-20 11:30:59 +02:00
Loïc Hoguin
70d28ff64d Make sure the hixie-76 websocket code works properly with proxies 2011-10-20 01:36:23 +02:00
Loïc Hoguin
fe5f0ca539 Add a max_line_length to the HTTP protocol
Allows to limit the size of request and header lines, thus preventing
Cowboy from infinitely reading from the socket and never finding an
end of line.

Defaults to 4096 bytes.
2011-10-19 20:35:55 +02:00
Loïc Hoguin
97df2a2d79 Fix the init_shutdown test 2011-10-19 18:50:06 +02:00
Loïc Hoguin
1e7338bdd4 Rewrite the token list parsing into separate, modulable functions
Introduce cowboy_http's list/2, nonempty_list/2, token/2 functions.
2011-10-17 10:29:14 +02:00
Loïc Hoguin
81cc99d10b Add shortcuts to reply functions
New functions are reply/2, reply/3, chunked_reply/2 in cowboy_http_req.
2011-10-13 16:16:53 +02:00
Loïc Hoguin
2a324aca3a Rename a variable from Code to Status 2011-10-13 16:01:55 +02:00
Loïc Hoguin
bf1b84eb83 Fix a misnamed variable for {loop, ...} returns in init/3 2011-10-11 18:12:50 +02:00
Loïc Hoguin
a55d1966f4 Bump quoted to version 1.2.0 2011-10-11 10:21:59 +02:00
Loïc Hoguin
691b7c4518 Fix specs after erlang:hibernate/3 calls were added
This however does not fix the related Dialyzer warnings.
I have no idea what the warnings are about nor how to fix them,
so feel free to work on it and submit a patch!
2011-10-11 01:49:13 +02:00
Loïc Hoguin
5e006be01f Add support for loops in standard HTTP handlers
Now init/3 can return one of the following values to enable loops:
 - {loop, Req, State}
 - {loop, Req, State, hibernate}
 - {loop, Req, State, Timeout}
 - {loop, Req, State, Timeout, hibernate}

Returning one of these tuples will activate looping in the HTTP handler.
When looping, handle/2 is never called. Instead, Cowboy will listen
for Erlang messages and forward them to the info/3 function of the
handler. If a timeout is defined, Cowboy will also close the connection
when no message has been received for Timeout milliseconds.

The info/3 function is defined as info(Msg, Req, State). It can return
either of the following tuples:
 - {ok, Req, State}
 - {loop, Req, State}
 - {loop, Req, State, hibernate}

The first one ends the connection, calling terminate/2 before closing.
The others continue the loop.

Loops are useful when writing long-polling handlers that need to wait
and don't expect to receive anything. Therefore it is recommended to
set a timeout to close the connection if nothing arrives after a while
and to enable hibernate everywhere.

Normal HTTP handlers shouldn't need to use this and as such info/3
was made optional.
2011-10-10 17:27:52 +02:00