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

82 commits

Author SHA1 Message Date
Loïc Hoguin
5ec0eeb4d4
Depend on Cowlib master for WebTransport support
Some checks failed
Check Cowboy / Cleanup master build (push) Has been cancelled
Check Cowboy / Check examples (push) Has been cancelled
Check Cowboy / Cowboy (push) Has been cancelled
2025-06-20 13:37:10 +02:00
Loïc Hoguin
9430bf99ea
Use explicit Ranch and Cowlib versions 2025-02-17 12:57:00 +01:00
Jose M Perez
49061587be
Add WS compression test where only server sets client_max_window_bits
When the server has a non-default value configured and the client
doesn't send one the extension negotiation should fail.
2025-01-23 11:39:48 +01:00
Loïc Hoguin
8cb9d242b0
Initial HTTP/3 implementation
This includes Websocket over HTTP/3.

Since quicer, which provides the QUIC implementation,
is a NIF, Cowboy cannot depend directly on it. In order
to enable QUIC and HTTP/3, users have to set the
COWBOY_QUICER environment variable:

  export COWBOY_QUICER=1

In order to run the test suites, the same must be done
for Gun:

  export GUN_QUICER=1

HTTP/3 support is currently not available on Windows
due to compilation issues of quicer which have yet to
be looked at or resolved.

HTTP/3 support is also unavailable on the upcoming
OTP-27 due to compilation errors in quicer dependencies.
Once resolved HTTP/3 should work on OTP-27.

Because of how QUIC currently works, it's possible
that streams that get reset after sending a response
do not receive that response. The test suite was
modified to accomodate for that. A future extension
to QUIC will allow us to gracefully reset streams.

This also updates Erlang.mk.
2024-03-26 15:53:48 +01:00
Loïc Hoguin
cf71c742d6
Add max_fragmented_header_block_size HTTP/2 option 2024-03-14 12:56:33 +01:00
Loïc Hoguin
4958af5745
Update Cowlib to 2.12.1 2023-03-29 15:20:48 +02:00
Loïc Hoguin
880c72ef99
Cowlib 2.11.0 and Ranch 1.8.0 2021-04-24 16:31:14 +02:00
Viktor Söderqvist
059d58d39f
Graceful shutdown
Note: This commit makes cowboy depend on cowlib master.

Graceful shutdown for HTTP/2:

1. A GOAWAY frame with the last stream id set to 2^31-1 is sent and a
   timer is started (goaway_initial_timeout, default 1000ms), to wait
   for any in-flight requests sent by the client, and the status is set
   to 'closing_initiated'. If the client responds with GOAWAY and closes
   the connection, we're done.
2. A second GOAWAY frame is sent with the actual last stream id and the
   status is set to 'closing'. If no streams exist, the connection
   terminates. Otherwise a second timer (goaway_complete_timeout,
   default 3000ms) is started, to wait for the streams to complete. New
   streams are not accepted when status is 'closing'.
3. If all streams haven't completed after the second timeout, the
   connection is forcefully terminated.

Graceful shutdown for HTTP/1.x:

1. If a request is currently being handled, it is waited for and the
   response is sent back to the client with the header "Connection:
   close". Then, the connection is closed.
2. If the current request handler is not finished within the time
   configured in transport option 'shutdown' (default 5000ms), the
   connection process is killed by its supervisor (ranch).

Implemented for HTTP/1.x and HTTP/2 in the following scenarios:

* When receiving exit signal 'shutdown' from the supervisor (e.g. when
  cowboy:stop_listener/3 is called).
* When a connection process is requested to terminate using
  sys:terminate/2,3.

LH: Edited tests a bit and added todos for useful tests to add.
2020-11-27 15:38:21 +01:00
Loïc Hoguin
909c8a4b4d
Update rebar.config 2020-04-02 15:05:15 +02:00
Loïc Hoguin
6b3fa5bb76
Update Cowlib to 2.9.0 2020-03-30 15:02:31 +02:00
Loïc Hoguin
525eeeecc9
Cowboy 2.7.0 2019-10-10 16:15:51 +02:00
Loïc Hoguin
48f417ac8f
Fix and optimize sending of WINDOW_UPDATE frames
For long-running connections it was possible for the connection
window to become larger than allowed by the protocol because the
window increases claimed by stream handlers were never reclaimed
even if no data was consumed.

The new code applies heuristics to fix this and reduce the number
of WINDOW_UPDATE frames that are sent. It includes six new options
to control that behavior: margin, max and threshold for both the
connection and stream windows. The margin is some extra space
added on top of the requested read size. The max is the maximum
window size at any given time. The threshold is a minimum window
size that must be reached before we even consider sending more
WINDOW_UPDATE frames. We also avoid sending WINDOW_UPDATE frames
when there is already enough space in the window, or when the
read size is 0.

Cowlib is set to master until a new tag is done.
2019-09-05 14:07:38 +02:00
Loïc Hoguin
d846827b2a
Cowboy 2.6.3 2019-04-05 11:09:55 +02:00
Loïc Hoguin
d5489b4c73
Cowboy 2.6.2
Updates Cowlib to 2.7.2.
2019-04-04 11:23:50 +02:00
Loïc Hoguin
291d493c21
Update Ranch to 1.7.1 2018-11-28 12:11:08 +01:00
Loïc Hoguin
417032a445
Prepare the Cowboy 2.6 release 2018-11-17 13:36:14 +01:00
Loïc Hoguin
1e2d59ed26
Ranch 1.7.0 2018-11-14 12:33:43 +01:00
Loïc Hoguin
122faedc25
Initial support for the PROXY protocol header
Depend on Ranch master for now since it isn't in any release yet.
2018-10-30 23:30:54 +01:00
Loïc Hoguin
f1018fd1c1
Use cow_http2_machine's timer handling 2018-10-27 00:16:13 +02:00
getong
4493afbba0
Update Ranch to 1.6.2 2018-09-23 14:24:37 +02:00
Loïc Hoguin
9901a3b568
Update Cowlib to 2.6.0 2018-09-21 15:12:58 +02:00
Loïc Hoguin
7a36bc7488
Update Cowlib to 2.5.1 2018-09-12 15:00:48 +02:00
Loïc Hoguin
06a3a93de0
Update Ranch to 1.6.1 2018-08-13 15:07:59 +02:00
Loïc Hoguin
474cb359ce
Update erlang.mk and rebar.config 2018-05-16 12:28:55 +02:00
Loïc Hoguin
42439b93db
Update Cowlib to 2.3.0 2018-04-30 15:11:06 +02:00
Loïc Hoguin
7c366986d5
Update Ranch to 1.5.0 2018-04-10 13:43:50 +02:00
Loïc Hoguin
ac349120f6
Depend on Cowlib master for now 2018-04-06 17:39:48 +02:00
Loïc Hoguin
28f8b0f29a
Update Cowlib to 2.2.1 2018-03-28 18:12:37 +02:00
Loïc Hoguin
ac07dbeb04
Update rebar.config 2018-03-22 15:32:42 +01:00
Loïc Hoguin
388a68fc2e
Update Cowboy to 2.2.0 2017-12-11 14:17:38 +01:00
Loïc Hoguin
52d869128b
Tweak the Makefile 2017-11-17 13:18:13 +01:00
Loïc Hoguin
5e88a9b394
Update Cowlib to 2.0.1 and fix OTP 20.1+ Websocket compression
Unfortunately compression will be disabled for 20.1, 20.1.1
and 20.1.2. In additiona I do not recommend 20.1.3 due to
issues inflating some specific sizes.
2017-11-01 15:41:52 +00:00
Loïc Hoguin
716a052b15
Update version, CI and Cowlib dependency version
Hello 2.0.0!
2017-10-03 17:10:16 +02:00
Loïc Hoguin
49d13ece19
Update rebar.config 2017-07-19 00:50: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
1048bff929
Update rebar.config 2017-01-03 12:15:42 +01:00
Loïc Hoguin
faca7866ed
Partially update manual for the cowboy_req
Only the access functions have been modified so far.
2016-11-05 14:17:30 +02:00
Loïc Hoguin
2620d65fde Fix more HTTP/2 handshake test cases 2016-03-13 11:26:26 +01:00
Loïc Hoguin
837cf8b9ce Update Erlang.mk 2015-11-16 23:08:38 +01:00
Alexander Færøy
06bd01d35e
Use HTTPS dependencies when using Rebar 2015-07-05 23:31:44 +02:00
Juan Puig
050621231c Update Cowlib to 1.3.0 2015-05-06 11:16:35 +03:00
Loïc Hoguin
90ae31998e Update Cowlib to 1.2.0; adds Websocket permessage-deflate
The Websocket text frames should also be less resource intensive
to validate now, with a binary concatenation avoided.
2015-03-06 01:56:30 +01:00
Loïc Hoguin
dc8be8882c Use cow_ws for the Websocket parsing code
Updates Cowlib to 1.1.0
2015-02-16 15:48:04 +01:00
Loïc Hoguin
5cf9ac25e5 Update links extend -> ninenines 2014-08-02 12:38:15 +02:00
Loïc Hoguin
aaac973cbd Update rebar.config 2014-08-01 14:33:30 +02:00
Loïc Hoguin
c81b94160e Update Ranch to 0.10.0 2014-06-10 11:36:55 +02:00
Loïc Hoguin
6bbdbe4efa Update cowlib to 0.6.2
Fixes parsing of Google Analytics cookies.
2014-06-10 09:34:46 +02:00
Loïc Hoguin
0502452967 Update cowlib to 0.6.1 2014-03-27 11:39:09 +01:00
Loïc Hoguin
9110ee83fe Update rebar.config 2014-03-25 18:23:26 +01:00
Loïc Hoguin
340cf8581f Update cowlib to 0.5.1 to fix multipart issues 2014-02-19 19:09:58 +01:00