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

532 commits

Author SHA1 Message Date
Loïc Hoguin
917cf99e10 Add and document the new multipart code
The old undocumented API is removed entirely.

While a documentation exists for the new API, it will not
be considered set in stone until further testing has been
performed, and a file upload example has been added.

The new API should be a little more efficient than the
old API, especially with smaller messages.
2014-02-06 19:36:25 +01:00
Loïc Hoguin
b1fc7b1a9f Nicer error when NPN isn't available 2013-12-28 17:49:37 +01:00
Loïc Hoguin
4efe014a2a Fix a small typo in a test 2013-12-28 17:34:59 +01:00
Loïc Hoguin
0a439d0f03 Fix the SPDY suite for R15 2013-12-28 17:20:08 +01:00
James Fish
1c474af8ee Fix loop handler keepalive race condition
Previously if a loop handler received the timeout message from a
previous request on the same connection the socket would be set to
{active, once} incorrectly - when a socket packet was already in the
message queue. This second packet would not be added to the buffer
before a Handler:info/3 call if a user message was in the message
queue before both socket packets.
2013-11-18 23:19:37 +00:00
Adrian Roe
c2e946708e Add a workaround to disable chunked transfer-encoding
This is an undocumented workaround to disable chunks when using HTTP/1.1.
It can be used when the client advertises itself as HTTP/1.1 despite not
understanding the chunked transfer-encoding.

Usage can be found looking at the test for it. When activated, Cowboy
will still advertise itself as HTTP/1.1, but will send the body the same
way it would if it was HTTP/1.0.
2013-11-08 21:56:37 +01:00
Loïc Hoguin
6672ea0415 Review, improve and document the static files handler
Changes include:

 *  Much simplified route configuration.

 *  Etag generation is now enabled by default.

 *  Web mimetypes are now detected by default. A bigger list of
    mimetypes can be detected without any additional library.

 *  Mimetypes can no longer be specified as a list. Copying this
    list for new connections is too costy. You can easily convert
    it into a function and pass that function to the handler instead.

 *  You can however specify a single hardcoded mimetype. Mostly
    useful when serving a single file, like an index.html file,
    to avoid extra operations.

 *  Specifying a path as a list of tokens is not possible anymore.
    Use either a binary or a string.

 *  Using a private directory will not work if the application
    was not started properly. Cowboy will not attempt to find
    the location of this directory if the VM doesn't know it,
    as this caused issues in some setups.

 *  Overall the code has been much simplified and clarified,
    and of course has now been documented.
2013-11-02 14:41:46 +01:00
Loïc Hoguin
bbe42d9bc5 Fix value for header content-encoding in a test
Not that it matters for the test, but still.
2013-09-09 16:28:37 +02:00
Loïc Hoguin
4a30198f90 Make cowlib a proper dependency
Start moving a few functions from Cowboy into cowlib.
2013-09-04 19:24:54 +02:00
Loïc Hoguin
67410731e0 Merge branch 'ipv6-literal' of git://github.com/yamt/cowboy 2013-09-02 20:05:03 +02:00
YAMAMOTO Takashi
d2adbf3de6 add some tests for Host header parser 2013-09-03 02:59:12 +09:00
Loïc Hoguin
9eab26d835 Add request body support for SPDY
And various other improvements following the addition of two tests.

New dependency cowlib that will gradually receive most of the parse
code from SPDY but also HTTP and its headers.
2013-09-02 19:14:28 +02:00
Loïc Hoguin
d68b3de9d9 Use gun to test the SPDY implementation in Cowboy 2013-08-31 18:39:49 +02:00
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