Age | Commit message (Collapse) | Author |
|
|
|
The socket staying open meant that the graceful shut down
of the Cowboy listeners were waiting for the connections
to be closed gracefully (or a timeout). Closing explicitly
where it makes sense ensures we don't unnecessarily wait.
This commit removes a full minute in the run time of all
Cowboy test suites (minus examples).
|
|
Sending extra response prevented by terminating all streams except
the one currently executing.
LH: Reworded some variables to make what happens more obvious.
|
|
LH: Small tweaks and added an HTTP/1.0 test.
|
|
It seems that macOS GH runners don't do timeouts well.
|
|
LH: I have added a test that does both hibernate and timeout
and fixed a related issue. I also tweaked the docs and tests.
|
|
A future OTP release will use 'strict' code path by default.
This change ensures it works both for old and new OTP.
|
|
|
|
Doing so will let us notice when the connection is gone instead
of waiting for timeouts, at least in the cases where the remote
socket was closed properly. Timeouts are still needed in case
of TCP half-open problems.
This change means that the order of stream handler commands is
more important than before because socket errors may occur
during the processing of commands.
|
|
LH: I reworked the test a little and added the same test
for HTTP/2 so that both HTTP/1.1 and HTTP/2 get the issue
fixed.
|
|
|
|
LH: I have fixed issues in the PR and incorporated changes
from a sister PR by @djankovic (git author: Dom J). I also
made sure the UTF-8 files were readable without Chinese
fonts and added their downloading to the examples test suite.
|
|
|
|
Co-authored-by: Björn Svensson <[email protected]>
|
|
|
|
|
|
This makes req_SUITE's cert_undefined test work again.
|
|
The key order of serialised maps changed in OTP-26.
|
|
ct_helper now uses the test certificates generated by
public_key. A few adjustments had to be made as a result.
|
|
|
|
|
|
|
|
|
|
They replace and deprecate the {true,URI} return value.
|
|
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.
|
|
|
|
|
|
When calling cowboy_req:reply/4 with a body a crash will occur
resulting in a 500 response. When calling cowboy_req:stream_reply/2,3
and then attempting to send a body a crash will occur.
|
|
100 is very low for current deployments. 1000 is more
appropriate as a default value.
|
|
|
|
Still seeing intermittent failures on Windows due to
timetrap so let's see if doubling the timeout again helps.
|
|
Again to avoid intermittent issues.
|
|
This happens from time to time on Windows and is partially
due to how the test is written.
|
|
|
|
This is to make up for very slow or low resource environments,
like the FreeBSD CI environment currently.
|
|
The local network is much slower so the tests take longer there.
|
|
This causes the test to get stuck because both the client and
server end up waiting in Transport:send for the other side to
read data from the socket.
|
|
|
|
|
|
|
|
|
|
To avoid intermittent test failures. We only want to make
sure the function eventually returns so we don't need to
use timeouts in the test itself, or check exactly what was
read.
|
|
The experiment was successful in Gun, let's see if it helps
with Cowboy as well.
|
|
Introduce a currently undocumented option to allow disabling
cowboy_http when using a clear listener.
|
|
We now allow spaces in cookie names.
|
|
Allow 10000 frames every 10 seconds instead of just 1000,
as the limit was too quickly reached in some deployments.
|
|
This resulted in a badarith error due to the current flow being
set to infinity when the body has been fully read. A test case
has been added reproducing the issue.
|
|
|
|
The flow control is now only set to infinity when we are
skipping the request body of the stream that is being
terminated. This fixes a bug where it was set to infinity
while reading a subsequent request's body, leading to a
crash.
The timeout is no longer reset on stream termination.
Timeout handling is already done when receiving data
from the socket and doing a reset on stream termination
was leading to the wrong timeout being set or the right
timeout being reset needlessly.
|
|
|