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

1125 commits

Author SHA1 Message Date
Loïc Hoguin
21802d2767 Use queue() for managing wait queues in cowboy_listener
The previous solution was retrieving the last put connection
and wasn't a real queue, so this solution should improve the
overall latency under load.
2012-01-31 09:45:44 +01:00
Loïc Hoguin
42bf0ea57d Refactor cowboy_listener for more consistency 2012-01-31 09:25:23 +01:00
Loïc Hoguin
e5aef5c1d7 Add cowboy:get_protocol_options/1 and cowboy_set_protocol_options/2
This allows any application to upgrade the protocol options without
having to restart the listener. This is most useful to update the
dispatch list of HTTP servers, for example.

The upgrade is done at the acceptor level, meaning only new connections
receive the new protocol options.
2012-01-31 08:49:15 +01:00
Loïc Hoguin
830cfc002e Move max_connections check directly inside cowboy_listener
This is a big change in the internal cowboy API. This should not
have any impact on existing applications as only the acceptor is
expected to use these API calls.

The function cowboy_listener:wait/3 has been removed. max_connections
checking now occurs directly in cowboy_listener:add_connection/3.
If the pool is full and the acceptor has to wait, then it doesn't
return, waiting for a free space to be available.

To accomodate these changes, it is now cowboy_listener that will
inform the new connection that it is ready by sending {shoot, self()}.
This should be a great improvement to the latency of responses as
there is one less message to wait for before the request process
can do its work.

Overall the performance under heavy load should also be improved as
we greatly reduce the number of messages sent between the acceptor
and the listener process.
2012-01-30 08:09:33 +01:00
Tom Burdick
ca42ea1620 Handle delete better when no delete_resource function is implemented 2012-01-26 18:21:20 +01:00
Loïc Hoguin
4b93c2d19a Fix a case where request body wouldn't get cleaned up on keepalive
The body was still in the buffer that's being used for the next
request and was thus used as a request, causing errors.
2012-01-23 21:57:54 +01:00
Loïc Hoguin
16d3cb76c7 Rename the type http_status/0 to cowboy_http:status/0 2012-01-23 09:43:26 +01:00
Loïc Hoguin
a297d5e42b Rename the type http_header/0 to cowboy_http:header/0
At the same time rename http_headers/0 to cowboy_http:headers/0.
2012-01-23 09:36:59 +01:00
Loïc Hoguin
8622dff906 Rename the type http_version/0 to cowboy_http:version/0 2012-01-23 09:28:29 +01:00
Loïc Hoguin
314483a0b6 Rename the type http_uri/0 to cowboy_http:uri/0 2012-01-23 09:23:58 +01:00
Loïc Hoguin
9f40167487 Rename the type http_method/0 to cowboy_http:method/0
Exported types are much better than include files.
2012-01-23 09:21:33 +01:00
Loïc Hoguin
3667ec9451 Fix typespecs for calendar:datetime/0 in cowboy_http_static 2012-01-23 09:20:46 +01:00
Loïc Hoguin
dee19f11c3 Add {halt, Req, State} return value to most REST callbacks
Excluding generate_etag, last_modified, expires and variances.
2012-01-23 08:24:15 +01:00
Loïc Hoguin
0761ef67a1 Rename a lot of HandlerState2 variables to HandlerState 2012-01-23 08:11:29 +01:00
Loïc Hoguin
3078e94db6 Improve the return value for cowboy_http_rest:upgrade/4 2012-01-23 07:55:08 +01:00
Loïc Hoguin
b650ef8907 Merge branch 'multipart' of https://github.com/nox/cowboy
Conflicts:
	src/cowboy_http_req.erl
	test/http_SUITE.erl
2012-01-23 07:37:49 +01:00
Anthony Ramine
528507c7de Add multipart support 2012-01-23 07:20:35 +01:00
Loïc Hoguin
e68bbfac34 Welcome to new developments with 0.5.0 2012-01-12 20:08:35 +01:00
Loïc Hoguin
9ee120db78 Update version to 0.4.0 2012-01-09 08:13:20 +01:00
Loïc Hoguin
fed6727634 Make REST handlers' put_resource accept true or false return values
Followup to 0bb23f2400.
As discussed in #119.
2012-01-09 08:06:05 +01:00
Magnus Klaar
a7334d55c0 Add etag option to cowboy_http_static handler. 2012-01-07 23:07:45 +01:00
Loïc Hoguin
0bb23f2400 Make REST handlers' process_post accept true or false return values
They should return true when it has been processed successfully,
or false otherwise, in which case a 500 error is sent.

Fixes #119.
2012-01-06 21:05:58 +01:00
Loïc Hoguin
fd211d3c03 Fix handler crashes handling
We try to send a 500 error only if we didn't send the response
headers yet. If they were, then we have no way to be sure the
response was fully sent, nor should we assume anything about
how this will be handled client-side, so we do nothing more
and in both cases close the connection.
2012-01-06 20:23:59 +01:00
Loïc Hoguin
ba87aa4193 Move the ensure_response call before ensure_body_processed
We want to reply as soon as possible.
2012-01-06 19:20:17 +01:00
Magnus Klaar
54d16c14ad Add test and doc for content types function. 2012-01-05 01:01:03 +01:00
Yurii Rashkovskii
ade1fb93ca inet_address:parse/1 does not accept binaries as an input, only strings 2012-01-04 15:13:14 -08:00
Loïc Hoguin
bd8f31ed07 Merge branch 'static-handler-split' of https://github.com/klaar/cowboy 2012-01-03 23:39:45 +01:00
Magnus Klaar
89870b22d9 Add note on async threads to cowboy_http_static. 2012-01-03 16:29:32 +01:00
Magnus Klaar
ea7ae14df8 Add built-in cowboy_http_static handler. 2011-12-28 18:17:15 +01:00
Magnus Klaar
f56479ffc2 Add cowboy_http_req:set_resp_body_fun/3 to rest 2011-12-28 18:17:15 +01:00
Magnus Klaar
937a2b0326 Add cowboy_http_req:set_resp_body_fun/3. 2011-12-28 18:17:10 +01:00
Magnus Klaar
612b8f21fe Add cowboy_http_req:transport/1 function. 2011-12-28 18:15:47 +01:00
Loïc Hoguin
156c84ff29 Use calendar date and time types exported since R14B04
Removes the cowboy_clock:date/0, time/0 and datetime/0 exported types.
2011-12-26 10:17:29 +01:00
Loïc Hoguin
298ba1f1bb Add 'Upgrade' header parsing
Not parsing product tokens, I don't see much point.
2011-12-22 22:10:00 +01:00
Loïc Hoguin
17c9d45786 Remove outdated @todo notes and update another 2011-12-22 21:48:24 +01:00
Loïc Hoguin
72d91583b9 Add a max_keepalive HTTP protocol option
Based on the patch by Louis-Philippe Gauthier.
2011-12-22 21:35:40 +01:00
Loïc Hoguin
eea6b2ab80 Websocket control frames payload length must be lower than 126 bytes 2011-12-22 21:00:09 +01:00
Loïc Hoguin
c54c361adb create_path now returns a path, not an URI
Also add the new 'put_path' metadata information to the request
before entering the put_resource step (which proceeds to call
content_types_accepted and then the chosen content type's callback,
which is expected to use the 'put_path' value as the path to the new
resource instead of the original request path, because it may have
been changed by the create_path call.
2011-12-19 10:29:44 +01:00
Loïc Hoguin
f390dbd606 Add meta/2 and meta/3 to cowboy_http_req to save useful protocol information
* cowboy_http_protocol now defines 'websocket_version' as metadata.
* cowboy_http_rest now defines 'media_type', 'language', 'charset' as metadata.
2011-12-19 09:44:47 +01:00
Loïc Hoguin
f9bd5d1061 Add missing p_headers and cookies to compacted values 2011-12-19 08:56:48 +01:00
Magnus Klaar
fed1410b14 update type of resp_body to iodata
resp_body is set by cowboy_http_req:set_resp_body/2 which accepts
the input type iodata(). Update the resp_body field to use the same
type. Also update the cowboy_http_req:has_resp_body/2 function to
use the iolist_size/1 which works with both binary() and iolist()
values instead of the byte_size/1 function which only works with
binary() values.
2011-12-16 16:29:13 +01:00
Loïc Hoguin
ce7084aa07 Fix a dialyzer warning 2011-12-15 20:45:12 +01:00
Loïc Hoguin
f81cb89b54 Reply status 400 if we receive an unexpected value or error for headers 2011-12-15 20:43:15 +01:00
Loïc Hoguin
e550ba7cd3 Add cowboy:accept_ack/1 for a cleaner handling of the shoot message 2011-12-15 20:19:02 +01:00
Loïc Hoguin
874cdd3bda Merge branch 'variances-fix' of github.com:klaar/cowboy 2011-12-12 08:23:34 +01:00
Loïc Hoguin
f445f16f60 Fixes match_media_type in cowboy_http_rest
Based on the patch from Heinz N. Gies. The main change is that his
patch accept values such as */plain which we do not want.

Fixes issue #105.
2011-12-12 08:21:18 +01:00
Loïc Hoguin
a37dd714e0 Merge branch 'hipe-compilation-fix' of github.com:klaar/cowboy 2011-12-12 07:54:56 +01:00
Loïc Hoguin
7c1372df20 Merge branch 'master' of github.com:talentdeficit/cowboy 2011-12-12 07:47:08 +01:00
alisdair sullivan
62bdb7d9a2 adds webmachine format content type handling 2011-12-12 07:46:35 +01:00
Magnus Klaar
2644a6cacc update cowboy_http_rest:variances/2
Fix pattern in case statement that was intended
to strip away the first comma separating the
values in the variance header.

Update generation of variance list to use more
idiomatic erlang. Pattern match on list structure
over using erlang:length/1 to compute length.
2011-12-11 19:57:07 +01:00