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

1513 commits

Author SHA1 Message Date
Loïc Hoguin
2bcb390257
Update version to 2.0.0-pre.10 2017-06-28 20:15:52 +02:00
Loïc Hoguin
490fbbe2f7
Update OTP versions 2017-06-28 20:15:24 +02:00
Loïc Hoguin
09506e7b5f
Fix wrong percent encoding in a router test 2017-06-28 18:59:20 +02:00
Loïc Hoguin
eb1a06cf5d
Remove the cyrillic latin1 test
These characters are not allowed in URI paths.
2017-06-28 18:57:51 +02:00
Loïc Hoguin
12b5e78aaa
Fix unit tests in cowboy_router following interface changes 2017-06-28 18:57:04 +02:00
Loïc Hoguin
c221730371
Improve the interface for constraints
There are two important changes in this commit.

Constraints are now producing an error tuple. This error tuple
in turn can be provided to a function for formatting a human
readable error message. Both the error tuple and the formatting
code are controlled by and part of the constraint function.

Constraints now also implement the reverse operation.
When constraint functions only validate, the reverse operation
will be the same as the forward operation. When they also do
some conversion then the reverse operation will reverse it.

Since constraints are now performing 3 different operations
(forward, reverse and format_error), they now take the form
of a function accepting two separate arguments. The operation
is the first argument.

In addition, the return value was changed to take the form
of {ok, Value} | {error, Reason}. The value must be returned
as-is if it was not modified.
2017-06-28 17:38:17 +02:00
Loïc Hoguin
3eb7693e4f
Remove outdated multipart tests
They have equivalents in req_SUITE.
2017-06-28 13:07:44 +02:00
Loïc Hoguin
f425f7478a
Add another RFC to the pile 2017-06-28 12:07:28 +02:00
Loïc Hoguin
47eaadb209
Fix a confusing code snippet
Reported by Jordan Chaitin.
2017-06-14 15:07:31 +02:00
Loïc Hoguin
ec00e3d60e
Make cowboy_req:read_part return multipart headers as map 2017-06-09 16:57:11 +02:00
Loïc Hoguin
6f7b59886e
Remove NumAcceptors argument from start_clear/tls
They are now cowboy:start_clear/3 and cowboy:start_tls/3.
The NumAcceptors argument can be specified via the
num_acceptor transport option. Ranch has been updated
to 1.4.0 to that effect.
2017-06-07 15:15:54 +02:00
Loïc Hoguin
767da623f1
Fix terminate not being called on connection close in HTTP/1.1
Introduces the new stream_handler_SUITE test suite. More cases
will be added later on.
2017-06-02 12:31:00 +02:00
Loïc Hoguin
cbf7972f10
Don't terminate streams that were already terminated
This and the issues in the last two commits were reported
by leo2007 on IRC.
2017-05-31 13:20:12 +02:00
Loïc Hoguin
cad3e3f63d
Fix bad accounting of HTTP/2 windows
The previous code was incorrectly substracting the maximum
frame size we could send when the data we were actually sending
was much lower.
2017-05-31 12:49:21 +02:00
Loïc Hoguin
18e2d684b3
Apply the received SETTINGS frame 2017-05-31 12:48:22 +02:00
Loïc Hoguin
5f421f93bc
Introduce the req_filter Websocket option
This option allows customizing the compacting of the Req object
when using Websocket. By default it will keep most public fields
excluding headers of course, since those can be large.
2017-05-28 20:19:39 +02:00
Loïc Hoguin
8cb125dbb7
Fix a harmless warning in tests 2017-05-23 14:10:05 +02:00
Loïc Hoguin
9ef4536656
Add many tests for RFC7540 5.1 and 5.1.1 and related fixes 2017-05-23 14:09:38 +02:00
Loïc Hoguin
4048f16365
Add a test suite for h2spec
h2spec must be preinstalled on the machine and its location
pointed at by the H2SPEC environment variable.
2017-05-23 14:05:00 +02:00
Loïc Hoguin
8ed44cd9a9
Add another RFC to the list of specs 2017-05-20 12:35:20 +02:00
Loïc Hoguin
2ad057ab1c
Update to 2.0.0-pre.9 2017-05-19 20:23:01 +02:00
Loïc Hoguin
f3e5f3e410
Preliminary h2 flow control support
Existing tests pass. A number of things remain to be done.
Has only been tested with Gun so far. Feedback welcome!
2017-05-19 20:18:00 +02:00
Alexandre Snarskii
304e3efbf8
make set_env working with maps. 2017-05-07 18:39:47 +02:00
Loïc Hoguin
78af194e07
Add a test for cowboy:set_env 2017-05-07 18:39:43 +02:00
Gary Rennie
4d92487f84
Add test for inactivity_timeout option in cowboy_http2
The inactivity timeout is used to close the connection in the absence of
any data from the client.

Since this is not part or the rfc7540 spec, a new http2_SUITE module has
been created with a test for the inactivity_timeout.
2017-05-05 18:46:12 +02:00
Steven Magelowitz
f302ce2b83
length can be a non_neg_integer or infinity 2017-05-05 17:55:18 +02:00
Loïc Hoguin
8ef1382f0a
Add OTP 19.3.3 and 20-rc1 to CI; remove OTP 18 2017-05-05 16:39:49 +02:00
Loïc Hoguin
96bbf6752f
Properly handle 101 upgrade responses for Websocket 2017-05-05 16:10:15 +02:00
Loïc Hoguin
7db724f04a
Add inactivity_timeout and other options improvements 2017-05-05 13:48:25 +02:00
Loïc Hoguin
6100470c90
Kill all children processes when terminating the connection
This is a more or less temporary solution to an existing problem.
In the future we will need to enforce a shutdown timeout for
these processes.
2017-05-03 18:31:28 +02:00
Loïc Hoguin
95d2855f62
Add the idle_timeout HTTP/1.1 protocol option
This fixes the connection being dropped because of request_timeout
despite there being some active streams.
2017-05-03 17:44:00 +02:00
Gary Rennie
73b4eb94ff
Update Websocket handler docs default timeout
This was changed from infinity to 60s in
a45813c60f
2017-04-18 17:51:21 +02:00
Loïc Hoguin
b403f26da6
Remove an outdated todo comment 2017-04-18 16:36:03 +02:00
Loïc Hoguin
b7210d6d1a
Get rid of stray messages when killing HTTP/2 request processes 2017-04-18 16:33:41 +02:00
Loïc Hoguin
061cc227b1
Make the default 204 response go through stream handlers 2017-04-18 16:07:01 +02:00
Loïc Hoguin
6e8b907ae2
Pass the HTTP/2 switch_protocol event to stream handlers
To accomplish this the code for sending the 101 response was
moved to the cowboy_http2 module.
2017-04-18 14:06:34 +02:00
Loïc Hoguin
3633bceac5
Add more RFCs to the specs list 2017-04-18 12:35:45 +02:00
Loïc Hoguin
c2beff7126
Initial cowboy_stream manual 2017-04-10 16:37:01 +02:00
Loïc Hoguin
10dfd8c910
Add the early_error cowboy_stream callback
This callback is called when an error occurs before the request
(including headers, excluding body) was fully received. The
init/3 callback will not be called. The callback receives the
partial Req object (possibly empty), the reason for the error
and the response command that the server will send. It allows
you to be aware of the error and possibly modify the response
before it is sent.
2017-03-27 10:26:13 +02:00
Loïc Hoguin
14a01f71cb
Add a guide chapter linking to all specs 2017-03-20 14:21:42 +01:00
Loïc Hoguin
0d81dc04f1
Add more HTTP/2 tests for RFC7540 4.1 and 4.3 2017-03-02 19:35:24 +01:00
Loïc Hoguin
bb83a6ce33
Unknown HTTP/2 frames are ignored 2017-02-26 13:24:15 +01:00
Loïc Hoguin
a3636adcac
Add many test cases covering RFC7540 4.2
These tests cover frame sizes. It's mostly edge cases for sure
(ie misbehaving clients and us having to reject them properly).
I had these almost ready for a long time, so I'm glad I can
push them out.

This requires updating Cowlib too (we currently track master).
2017-02-25 20:05:31 +01:00
Loïc Hoguin
2af0506d51
Remove another useless todo 2017-02-19 16:52:04 +01:00
Loïc Hoguin
9255cdf1d7
Change the type of bindings from a list to a map
Maps make more sense because the keys are unique.
2017-02-19 16:51:16 +01:00
Loïc Hoguin
91ae70b06c
Change the order of set_resp_cookie arguments
The Opts value is put last, to be more consistent with the
rest of the cowboy_req module.

Additionally a test handler was fixed which reduced the number
of errors in http_SUITE.
2017-02-19 09:46:11 +01:00
Loïc Hoguin
87a05a1219
Change the type of cookie name to binary()
The API will be more consistent like this, and we can ensure
that duplicate cookie names are never sent.
2017-02-19 00:41:54 +01:00
Loïc Hoguin
d8cdd9bd15
Update version to 2.0.0-pre.7 2017-02-18 21:01:15 +01:00
Loïc Hoguin
c55db9a8ff
Ensure Websocket errors result in a crash log 2017-02-18 20:21:02 +01:00
Loïc Hoguin
c4ed8e2a37
Erlang/OTP 19.2.3 2017-02-18 19:15:45 +01:00