aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2025-01-15Avoid resetting Websocket idle_timeout timer too oftenLoïc Hoguin
`perf` has shown that Cowboy spends a lot of time cancelling and starting this timer. Instead of resetting for every data received, we now only reset a field in the state. Before it was working like this: - start idle timeout timer - on trigger, close the connection - on data, cancel and start again Now it's working like this: - start idle timeout timer for a tenth of its duration, with tick number = 0 - on trigger, if tick number != 10 - start the timer again, again for a tenth of its duration - increment tick number - on trigger, if tick number = 10 - close the connection - on data, set tick number to 0
2025-01-15Add ws_perf_SUITE to measure Websocket performanceLoïc Hoguin
It benchmarks binary, ascii, mixed and japanese data using Websocket and Websocket over HTTP/2. HTTP/2 options get set to ensure that performance is better than the default HTTP/2 options. It switches to Gun and Ranch branches that include fixes that are required for tests to complete successfully.
2024-11-27Update Discord link to a permanent inviteLoïc Hoguin
2024-11-15Update CONTRIBUTING.asciidocLoïc Hoguin
2024-11-15Add Discord server to READMELoïc Hoguin
2024-11-08CI: Remove unneeded envLoïc Hoguin
2024-11-08CI: Add concurrency rulesLoïc Hoguin
2024-11-08CI: Simplify testing for examplesLoïc Hoguin
Since we only test them on Ubuntu we can use setup-beam to install Erlang/OTP and avoid waiting for all other checks to complete. Also make the "delete master" job conditional rather than only its step.
2024-11-07CI: Fix master build deletionLoïc Hoguin
Some things likely changed and made it not work anymore. Also seems that the macOS runner is now ARM64.
2024-11-07Fix markdown example for OTP-27Loïc Hoguin
2024-11-06CI: Upload logs in examples job tooLoïc Hoguin
2024-11-06Update Erlang.mkLoïc Hoguin
2024-04-05Add VU#421644 to the HTTP/2 CONTINUATION Flood testLoïc Hoguin
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-14Update erlang.mkLoïc Hoguin
2024-03-14Add max_fragmented_header_block_size HTTP/2 optionLoïc Hoguin
2024-01-29Make sure we can cancel ct-examples in CI2.11.0Loïc Hoguin
2024-01-26Update ssl_hello_world example certificateLoïc Hoguin
2024-01-26Don't use specific actions versions and update cache to v4Loïc Hoguin
2024-01-26Run make ct-examples at the end of normal CILoïc Hoguin
2024-01-25Refresh copyright linesLoïc Hoguin
2024-01-23Cowboy 2.11Loïc Hoguin
2024-01-23Document reset_idle_timeout_on_send optionLoïc Hoguin
2024-01-23Fix match_qs with constraints when key is not presentgeeksilva97
Original fix by Ali Farhadi <[email protected]>.
2024-01-23Getting started must include relx in depsLoïc Hoguin
2024-01-23Update the guide with range requests supportLoïc Hoguin
Also update the list of headers cowboy_rest might set and tweak a small number of other items.
2024-01-22Document range requestsLoïc Hoguin
2024-01-18Reduce sleep in chunked_one_byte_at_a_timeLoïc Hoguin
To avoid having the connection get closed due to us taking too long on unreliable environments like GitHub Actions.
2024-01-18Retry the read_urlencoded_body_too_large if timeout triggersLoïc Hoguin
This is caused by the timeout being 1s after the period. When the CI environment is overloaded, sometimes the timeout will trigger. We retry, knowing that the timetrap will catch us if we retry too much.
2024-01-17Improve reliability of a few testsLoïc Hoguin
GitHub Actions runners are not as good as self-hosted BuildKite so some adjustments need to be made to timeouts and such.
2024-01-17Show links in README in make prepare_tagLoïc Hoguin
2024-01-17Add missing manual pages for cowboy_stream functionsLoïc Hoguin
2024-01-16REST: Allow generate_etag to return undefinedLoïc Hoguin
This allows conditionally generating an etag.
2024-01-16Recommend increasing max_frame_size_received HTTP/2 optionLoïc Hoguin
2024-01-16Confirm Websocket pong frames are received by handlersLoïc Hoguin
2024-01-16Fix an intermittent test failureLoïc Hoguin
2024-01-15Reject responses with explicit set-cookie headergeeksilva97
LH: The tests received a lot of fixes and tweaking. I also reworded the error message to be more concise.
2024-01-15Fix wrong HTTP/1 timeout being used in some casesLoïc Hoguin
Added many tests to ensure the right timeout is picked in the appropriate situation. Should there be any issues remaining we can add more tests.
2024-01-09Better error message when trying to reply twiceLoïc Hoguin
Also crash if trying to push after a reply was sent.
2024-01-09Shorten the 204/304 error messageLoïc Hoguin
2024-01-09Improve the error when trying to send a 204/304 with a bodyLoïc Hoguin
2024-01-08Document body reading in auto modeLoïc Hoguin
It is now tested both via cowboy_req:read_body and via cowboy_req:cast. Removes a bad example from the guide of body reading with period of infinity, which does not work.
2024-01-08Ensure HTTP/1.1 Websocket resets the trap_exit flagLoïc Hoguin
While we are identified as a supervisor in the tree, we no longer manage children processes at that point, so do not need to trap exit signals. Users can still enable trap_exit if they prefer to.
2024-01-08Always add vary: accept-encoding in cowboy_compress_hLoïc Hoguin
We must add it even if we don't end up compressing because it indicates that we might. This indication doesn't mean that the user agent's accept-encoding values will ever result in content encoding being applied.
2024-01-08Don't fail actions if master cache doesn't existLoïc Hoguin
2024-01-05Reject HTTP/1 requests with both content-length and transfer-encodingLoïc Hoguin
The previous behavior was to accept them and drop the content-length header as per the RFC recommendation. But since this behavior is not normal it is safer to just reject such requests than risk security issues.
2024-01-05Don't automatically compress when response has etagLoïc Hoguin
In the cowboy_compress_h stream handler. Otherwise this could cause issues with caching, with the etag being the same for compressed/uncompressed content. Users that wish to send etags AND compress will have to do it manually for the time being.
2024-01-05Add cowboy:get_env/2,3Loïc Hoguin
2024-01-05Fix Dialyzer warnings caused by my decompress changesLoïc Hoguin