Skip to content

Releases: icing/mod_h2

mod_h2 v2.0.1

03 Dec 14:05
Compare
Choose a tag to compare
  • 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

17 Nov 12:57
Compare
Choose a tag to compare
  • 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

30 Sep 07:43
Compare
Choose a tag to compare
mod_h2 v2.0.0-rc4 Pre-release
Pre-release
  • fixing an uninitialized status code when pollsets are not used for streams.

mod_h2 v2.0.0-rc3

29 Sep 10:16
Compare
Choose a tag to compare
mod_h2 v2.0.0-rc3 Pre-release
Pre-release
  • 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

28 Sep 11:22
Compare
Choose a tag to compare
mod_h2 v2.0.0-rc2 Pre-release
Pre-release
  • 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

28 Sep 07:23
Compare
Choose a tag to compare
mod_h2 v2.0.0-rc1 Pre-release
Pre-release

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

10 Sep 09:41
Compare
Choose a tag to compare
  • 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

19 Jul 08:56
Compare
Choose a tag to compare
  • 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

10 Jul 10:26
Compare
Choose a tag to compare
  • 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 for apache2ctl if apachectl 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

06 Jul 10:06
Compare
Choose a tag to compare
  • 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