aboutsummaryrefslogtreecommitdiffstats
path: root/Makefile
AgeCommit message (Collapse)Author
2024-03-26Initial HTTP/3 implementationhttp3Loïc Hoguin
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-14Cowboy 2.12.02.12.0Loïc Hoguin
2024-03-14Add max_fragmented_header_block_size HTTP/2 optionLoïc Hoguin
2024-01-26Run make ct-examples at the end of normal CILoïc Hoguin
2024-01-23Cowboy 2.11Loïc Hoguin
2024-01-17Show links in README in make prepare_tagLoïc Hoguin
2023-12-04Remove unneeded Makefile variablesLoïc Hoguin
2023-12-01Don't dialyze the tests by defaultLoïc Hoguin
2023-12-01Use GitHub actions for testing CowboyLoïc Hoguin
Now tested against OTP-24+. Erlang.mk has been updated as well.
2023-04-28Cowboy 2.10.02.10.0Loïc Hoguin
2023-03-30We are not using erl_make_certs anymoreLoïc Hoguin
2023-03-29Update Cowlib to 2.12.1Loïc Hoguin
2021-05-12Add Hex metadataLoïc Hoguin
2021-05-12Cowboy 2.9.02.9.0Loïc Hoguin
2021-04-24Cowlib 2.11.0 and Ranch 1.8.0Loïc Hoguin
2020-11-27Graceful shutdownViktor Söderqvist
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-05-21Cowboy 2.8.0Loïc Hoguin
2020-04-01Update Cowlib to 2.9.1Loïc Hoguin
Fixes HPACK edge cases (error conditions).
2020-03-30Update Cowlib to 2.9.0Loïc Hoguin
2020-03-29Cowboy itself doesn't use proper; Cowlib doesLoïc Hoguin
2020-01-06Use active,NLoïc Hoguin
This reduces the number of times we need to ask for more packets, and as a result we get a fairly large boost in performance, especially with HTTP/1.1. Unfortunately this makes Cowboy require at least Erlang/OTP 21.3+ because the ssl application did not have active,N. For simplicity the version required will be Erlang/OTP 22+. In addition this change improves hibernate handling in cowboy_websocket. Hibernate will now work for HTTP/2 transport as well, and stray or unrelated messages will no longer cancel hibernate (the process will handle the message and go back into hibernation). Thanks go to Stressgrid for benchmarking an early version of this commit: https://stressgrid.com/blog/cowboy_performance_part_2/
2019-12-31Add a commented option in the MakefileLoïc Hoguin
2019-10-10Cowboy 2.7.0Loïc Hoguin
2019-09-18Only test on the latest release per OTP major version by defaultLoïc Hoguin
2019-09-06Use Gun master for testsLoïc Hoguin
We no longer support OTP-19 so we don't need to stay on the old Gun version anymore.
2019-09-05Fix and optimize sending of WINDOW_UPDATE framesLoïc Hoguin
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-08-29Update CI to only test on OTP-20+Loïc Hoguin
2019-04-05Cowboy 2.6.32.6.3Loïc Hoguin
2019-04-05Add a prepare_tag target to help with releasingLoïc Hoguin
2019-04-04Cowboy 2.6.22.6.2Loïc Hoguin
Updates Cowlib to 2.7.2.
2019-04-03Use Gun 1.2.0 for tests to avoid OTP-19 issuesLoïc Hoguin
And temporarily depend on Cowlib master to confirm everything works as intended.
2019-04-01Cowlib 2.7.1Loïc Hoguin
2019-03-10Don't error out when h2spec can't be compiledLoïc Hoguin
2019-03-08Use Gun 1.3.0 instead of master for testsLoïc Hoguin
2018-11-28Cowboy 2.6.12.6.1Loïc Hoguin
2018-11-28Update Ranch to 1.7.1Loïc Hoguin
2018-11-20Don't run long test suites by defaultLoïc Hoguin
The examples test suite is only useful once in a while in order to know whether examples were broken, for example before issuing a release. The new ws_autobahn test suite isolates the autobahn test suite so that it can be ignored by default. It's only useful to run it when working on the Websocket code or before issuing a release.
2018-11-17Prepare the Cowboy 2.6 releaseLoïc Hoguin
2018-11-14Ranch 1.7.0Loïc Hoguin
2018-10-31Always dialyze tests and fix some cowboy_req specsLoïc Hoguin
2018-10-30Initial support for the PROXY protocol headerLoïc Hoguin
Depend on Ranch master for now since it isn't in any release yet.
2018-10-26Switch cowboy_http2 to the new cow_http2_machineLoïc Hoguin
The new module is a merge of the Cowboy and Gun HTTP/2 state machines. Using a common code will help future developments rather than duplicating the work. A notable change is in how streams are terminated when the handler stops before the body is sent. The cowboy_stream:terminate function is now called only after the body has been sent fully (or the stream is reset in-between), not when the stop command is returned. This will most likely have an impact on metrics but will be closer to reality. I had to comment a broken test in rfc7231_SUITE that was cheating, cheating is no longer possible. This depends on Cowlib master for the time being. A new Cowlib version will be released once both Cowboy and Gun are ported to use cow_http2_machine and I'm satisfied with it.
2018-10-02Shorten a command in the MakefileLoïc Hoguin
2018-09-23Update Ranch to 1.6.2getong
2018-09-21Update Cowlib to 2.6.0Loïc Hoguin
2018-09-12Prepare the 2.5.0 releaseLoïc Hoguin
2018-09-12Update Cowlib to 2.5.1Loïc Hoguin
2018-08-13See if recompiling ct_helper every time fixes ci buildsLoïc Hoguin
2018-08-13Update Ranch to 1.6.1Loïc Hoguin
2018-05-23Don't fail when copying erl_make_certsLoïc Hoguin