Releases: icing/mod_h2
Releases · icing/mod_h2
mod_h2 v2.0.1
- Improved information displayed in 'server-status' for H2 connections when
Extended Status is enabled. Now one can see the last request that IO
operations happened on and transferred IO stats are updated as well. - Fixed a bug that let to an infinite loop in v2.0.0 when the client closed
the connection. - Fixing NULL dereference if server variable SSL_PROTOCOL is unset.
- Setting DefaultRuntimeDir and PidFile in test configuration to override
any platform defaults. - Disabling pollset use when compiling with APR version < 1.6.0
mod_h2 v2.0.0
- HTTP/2 connections now use pollsets to monitor the status of the
ongoing streams and their main connection. - Fixed a bug where, without 'H2SerializeHeaders' some errors, such
as a input timeout, did not produce the correct response. - Added directove 'H2StreamTimeout' to configure a separate value for HTTP/2
streams, overriding server's 'Timeout' configuration. [rpluem] - The HTTP/2 connection state handler, based on an experiment and draft
at the IETF http working group (abandoned for some time), has been removed. - H2SerializeHeaders no longer has an effect. A warning is logged when it is
set to "on". The switch enabled the internal writing of requests to be parsed
by the internal HTTP/1.1 protocol handler and was introduced to avoid
potential incompatibilities during the introduction of HTTP/2. - Removed the abort/redo of tasks when mood swings lower the active
limit. This probably hurts the server more than it helps. Some
setup, like proxied connections, can be slow to respond to the
abort of a connection. - Fixed input handling for requests without body that nevertheless try
to read one (e.g. mod_cgid handling) to deliver at least an EOS bucket
before signalling an EOF. - A regression in v1.15.24 was fixed that could lead to httpd child
processes not being terminated on a graceful reload or when reaching
MaxConnectionsPerChild. When unprocessed h2 requests were queued at
the time, these could stall. See #212. - Fixed an issue since 1.15.24 that "Server" headers in proxied requests
were overwritten instead of preserved. [PR by @daum3ns]
mod_h2 v2.0.0-rc4
- fixing an uninitialized status code when pollsets are not used for streams.
mod_h2 v2.0.0-rc3
- Added an alternate implementation when polling of file descriptors is
not supported by the OS. This is automatically detected via the APR
header files, but can be enforces by adding '--disable-poll-streams'
to the './configure' when building the module.
This should allow the module to work on Windows again.
mod_h2 v2.0.0-rc2
- Switching from a thread-safe apr pollset (not supported under Windows) to
a wakeable pollset implementation. - Adding a clear error in the logs if the pollset could not be created.
mod_h2 v2.0.0-rc1
This is a rewrite of the HTTP/2 main connection handling to use APR
pollsets for dispatching requests and collecting responses. This
allows mod_h2 to be more responsive at less cpu cost and simplifies
connection state handling.
However, as a new implementation, this brings the risk of new bugs
and incompatibilities. It survives test suite and load tests. If you can
give it a run on your machine, feedback is appreciated!
- HTTP/2 connections now use pollsets to monitor the status of the
ongoing streams and their main connection. - Fixed a bug where, without 'H2SerializeHeaders' some errors, such
as a input timeout, did not produce the correct response. - Added directive 'H2StreamTimeout' to configure a separate value for HTTP/2
streams, overriding server's 'Timeout' configuration. [rpluem] - Removed work-arounds for older versions of libnghttp2 and checking
during configure that at least version 1.15.0 is present. Which, due
to its age, should not make a difference to anyone. - The HTTP/2 connection state handler, based on an experiment and draft
at the IETF http working group (abandoned for some time), has been removed. - H2SerializeHeaders no longer has an effect. A warning is logged when it is
set to "on". The switch enabled the internal writing of requests to be parsed
by the internal HTTP/1.1 protocol handler and was introduced to avoid
potential incompatibilities during the introduction of HTTP/2. - Removed the abort/redo of tasks when mood swings lower the active
limit. This probably did hurt the server more than it helped. Some
setup, like proxied connections, can be slow to respond to the
abort of a connection.
mod_h2 v1.15.24
- With Apache httpd 2.4.49 or newer, h2 idle workers are terminated on a graceful
restar/shutdown immediately. This happens independant of any h2 connections being
processed or not. - Switch to using OpenSSL EVP_* API to avoid deprecation warnings with
OpenSSL 3.0. [@notroj]
mod_h2 v1.15.23
- H2MinWorker is reduced automatically to 1 during graceful shutdown
of a child process (e.g. server reload). This lets all ongoing requests
continue, but shuts down unused threads early.
The H2MaxWorkerIdleSeconds is also reduced to 1, so that any workers
for ongoing tasks will close down fast.
mod_h2 v1.15.22
- NOTE: this is a recommended update for anyone running v1.15.21.
- Added a timeout to h2 worker cleanup to exit latest after 5 seconds of
waiting on idle workers to terminate. This happens after all connections
have been processed. a WARNING is logged in case workers lagged behind.
This may happen in busy situations or depending on configurations that
have slow responses.
This fixes #212, many thanks to @famzah for his testing and feedback! - H2 sessions normally log a warning when the connection is torn down
without them being able to send a last GOAWAY frame. This logging
happens at DEBUG level during the stopping of a child process. configure
now checks forapache2ctl
ifapachectl
was not found.
This fixes #218.configure
now longer errors when no apachectl was found but warns
that the test suite will not work.- The test suite now clears Apache's error log on start and checks after
the run if unexpected errors or warnings were logged. - Added top level make target
docker-test
to run all defined test images.
This closes #217.
mod_h2 v1.15.21
- Making h2 connection "mood swings" to ignore clients resetting
requests which have at least produced the response headers and
one DATA chunk. This targets long-running requests like
websockets and server-side-events (SSE), where a RST_STREAM
ius the cleint's only option of terminating such requests.
With this change, clients are no longer punished for it.
See also: https://bz.apache.org/bugzilla/show_bug.cgi?id=65402
(background: "mood swings" influence how many resources are
available to a connection, e.g. how many h2 workers may be
working for it at a given point in time.) - Making H2Min/MaxWorkers behave as intended again. The module will initially
create H2MinWorkers threads and add up to H2MaxWorkers when needed. These
additional workers time out when idle after H2MaxWorkerIdleSeconds and
disappear again. - When the shutdown of a child is detected (e.g. graceful shutdown), the
module will terminate all idle workers above H2MinWorkers right away.
This detection currently only happens when a HTTP/2 connection is active.
See also #212. - Restoring compatibility with apache httpd 2.4.48 again.
- Adding a docker image for testing on archlinux. Use:
> docker-compose build archlinux
> docker-compose run archlinux
- Adding a docker image for testing on Debian 'sid'. Use:
> docker-compose build debian-sid
> docker-compose run debian-sid