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

169 commits

Author SHA1 Message Date
Loïc Hoguin
ddefa33a38 Merge branch 'fix/websocket-inflate-unmask' of git://github.com/soundrop/cowboy 2013-07-12 21:57:27 +02:00
Loïc Hoguin
f66a6fc57a Merge branch 'fix-chunked-req' of git://github.com/fishcakez/cowboy 2013-07-12 18:51:28 +02:00
James Fish
f0cc2d01e6 Fix decoding of chunked body.
Previously cowboy_http:te_chunked/2 would enter an incorrect state if
it tried to parse an incomplete chunk when the length was known from the
partial chunk.

Previosuly cowboy_http:te_chunked/2 expected the trailing "\r\n" to
always be present if chunk body was present in the buffer. This is not
guaranteed and so this commit accommodates that situation.
2013-07-05 22:45:18 +01:00
Ali Sabil
b0d0cabf12 Add failing tests for the websocket deflate support 2013-07-02 13:46:21 +02:00
Loïc Hoguin
39caf34fe3 Merge branch 'fix/http-tests-get-mtu' of git://github.com/soundrop/cowboy 2013-06-29 21:54:18 +02:00
Loïc Hoguin
fdf2bc93f6 Add asn1 to the list of applications to be started for SSL
Required since R16B01. And apparently needed in some cases before.
2013-06-20 16:01:58 +02:00
Ali Sabil
a63faff35e Add support for the webkit deflate frame extension 2013-06-20 13:09:13 +02:00
Ali Sabil
240533939c Use ct_helper for retrieving the loopack interface MTU 2013-06-13 11:47:24 +02:00
Ali Sabil
809dc32339 Improve the detection of localhost interfaces for the HTTP test suite 2013-06-10 09:53:32 +02:00
Ali Sabil
fdd67b72a3 Fix the reading of the localhost MTU in the HTTP tests
Sometimes the localhost interface has a different name from "lo",
this fix adds a helper function to read the MTU value when the
interface name starts with "lo".
2013-06-07 12:01:01 +02:00
Loïc Hoguin
1fc69977da Add sendfile support to SPDY, enabling cowboy_static use 2013-06-03 19:10:03 +02:00
Loïc Hoguin
e50f7e4086 Move static files creation into ct_helper 2013-06-03 17:20:54 +02:00
Loïc Hoguin
4fde6cba94 In content-types, the charset parameter is converted to lowercase
We know this specific parameter is case insensitive so we
automatically lowercase it to make things simpler to the
developer.
2013-05-31 18:38:43 +02:00
Loïc Hoguin
9a2d35c2e8 Add experimental and incomplete SPDY support
The SPDY connection processes are also supervisors.

Missing:
 *  sendfile support
 *  request body reading support
2013-05-30 20:21:01 +02:00
Loïc Hoguin
934393a168 Make the return value of AcceptResource callback consistent 2013-05-16 15:14:11 +02:00
Loïc Hoguin
6e33274c85 Update Ranch to 0.8.2 and use ct_helper for testing SSL 2013-05-01 18:30:00 +02:00
Loïc Hoguin
83e8ebb9ff Merge branch 'chunked-set-resp-body-fun' of git://github.com/fishcakez/cowboy 2013-04-28 16:08:36 +02:00
James Fish
c8242ab396 Add chunked response body fun
Adds a new type of streaming response fun. It can be set in a similar
way to a streaming body fun with known length:

Req2 = cowboy_req:set_resp_body_fun(chunked, StreamFun, Req)

The fun, StreamFun, should accept a fun as its single argument. This
fun, ChunkFun, is used to send chunks of iodata:

ok = ChunkFun(IoData)

ChunkFun should not be called with an empty binary or iolist as this
will cause HTTP 1.1 clients to believe the stream is over. The final (0
length) chunk will be sent automatically - even if it has already been
sent - assuming no exception is raised.

Also note that the connection will close after the last chunk for HTTP
1.0 clients.
2013-04-26 21:02:10 +01:00
Loïc Hoguin
e54149555e Move a test resource where it belongs 2013-04-26 17:34:24 +02:00
Loïc Hoguin
12bd1afeed Merge branch 'fix-tests' of git://github.com/fishcakez/cowboy 2013-04-26 15:28:41 +02:00
Loïc Hoguin
e73780975c Merge branch 'pr-381-fix' of git://github.com/seletskiy/cowboy 2013-04-26 13:45:47 +02:00
Seletskiy Stanislav
f316b47d13 Add default CTP: "text/html" maps to to_html 2013-04-26 18:34:01 +07:00
James Fish
77d1082233 Fix memory issue with large return values in testcases
Previously http_SUITE:echo_body/1 and http_SUITE:check_raw_status/1
returned large values. Common test would then try to write these to the
logs causing tests to take a long time and use lots of memory.
2013-04-26 02:08:50 +01:00
Loïc Hoguin
690927d9bd Update Autobahn test suite to 0.5.3 2013-04-24 21:48:24 +02:00
Loïc Hoguin
f329862384 Only test Websocket RFC6455 in Autobahn from now on 2013-04-24 20:33:51 +02:00
Loïc Hoguin
ad91aaf81a Reorganize the http test suite 2013-04-24 20:28:44 +02:00
Loïc Hoguin
282e532ba9 Move SSL test certificates in a subdirectory 2013-04-22 19:27:47 +02:00
Loïc Hoguin
2e91677723 Reorganize the websocket test suite
We now have the suite specific modules in the data folder.
Compilation is performed by the Makefile instead of ct_run.
2013-04-22 17:03:54 +02:00
Loïc Hoguin
b58a0549e1 Add default operations for OPTIONS method in REST
It defaults to setting the Allow header to "HEAD, GET, OPTIONS".
2013-04-12 19:02:00 +02:00
Loïc Hoguin
2aabc73045 Ensure we can fetch the body in the info/3 function of loop handlers 2013-04-12 14:32:37 +02:00
Vladimir Dronnikov
180143f9b2 rest: reject incorrect content-type header 2013-04-12 14:58:08 +04:00
Loïc Hoguin
5a171d0f80 Remove process_post, post_is_create, create_path, created_path callbacks
Instead it will always go through content_types_accepted and it is
up to the resource code to do any creation and to return the created
path if the method is POST and the client should be redirected to the
created resource's location.

This removes the meta value 'put_path' as it is not needed anymore.

This fixes an issue with PATCH where content types were not normalized.
2013-04-11 22:25:36 +02:00
rambocoder
84d7671e91 Check the length before reading the body in body/1 and body_qs/1 2013-03-06 08:50:45 -05:00
Slava Yurin
bb1362c744 Add '*' matcher for parameters
For get_type_provided:
'*' will be match any parameters of media-range in "accept" header.
If '*' matched, then '*' is replaced by the matching parameters.
If Accept header is missing and '*' using, then in media_type in parameters
will be '*' and reply content-type will be without any parameters.

For content_types_accepted:
'*' will be match any parameters in "content-type" header.
2013-03-03 22:54:37 +07:00
Loïc Hoguin
3442acbe35 Run tests in parallel 2013-03-02 16:24:34 +01:00
Loïc Hoguin
0ba06578f2 Use random ports for tests 2013-03-02 14:39:05 +01:00
Loïc Hoguin
b2ffff9bec Add cowboy:set_env/3 2013-02-20 12:14:21 +01:00
Loïc Hoguin
40b8d0befc Better handle socket closing with loop handlers
We now read from the socket to be able to detect errors or TCP close
events, and buffer the data if any. Once the data receive goes over
a certain limit, which defaults to 5000 bytes, we simply close the
connection with an {error, overflow} reason.
2013-02-11 09:03:13 +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
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
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
Loïc Hoguin
3b8a1365d1 Do not require inets for running tests anymore 2013-01-22 14:22:28 +01: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
81cfc1651e Improve keepalive tests 2013-01-21 14:34:33 +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
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
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