mod_proxy_http2.c

Checkout Tools
  • last updated 1 hour ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
*) mod_http2: Fixed rare cases where a h2 worker could deadlock the main connection.

  1. … 7 more files in changeset.
* modules/http2: reverting r1859724, as no good.

  1. … 22 more files in changeset.
*) mod_http2: internal code cleanups and simplifications. Common output code for

h2 and h2c protocols, using nested mutex locks for simplified calls. [Stefan Eissing]

  1. … 23 more files in changeset.
Follow up to r1859371: extend to other ap_proxy_connection_create[_ex]() users.

This function now now handles SSL reuse as well as the "proxy-request-hostname"

note (SNI), so let's also call it unconditionnaly in all proxy modules.

On the mod_ssl side, since this note has the lifetime of the connection, don't

reset/unset it during handshake (ssl_io_filter_handshake).

  1. … 6 more files in changeset.
* Only do one retry to be more in line with the other modules.
*) mod_http2: new configuration directive: ```H2Padding numbits``` to control

padding of HTTP/2 payload frames. 'numbits' is a number from 0-8,

controlling the range of padding bytes added to a frame. The actual number

added is chosen randomly per frame. This applies to HEADERS, DATA and PUSH_PROMISE

frames equally. The default continues to be 0, e.g. no padding. [Stefan Eissing]

*) mod_http2: ripping out all the h2_req_engine internal features now that mod_proxy_http2

has no more need for it. Optional functions are still declared but no longer implemented.

While previous mod_proxy_http2 will work with this, it is recommeneded to run the matching

versions of both modules. [Stefan Eissing]

*) mod_proxy_http2: changed mod_proxy_http2 implementation and fixed several bugs which

resolve PR63170. The proxy module does now a single h2 request on the (reused)

connection and returns. [Stefan Eissing]

  1. … 21 more files in changeset.
*) mod_http2/mod_proxy_http2: proxy_http2 checks correct master connection aborted status

to trigger immediate shutdown of backend connections. This is now always signalled

by mod_http2 when the the session is being released.

proxy_http2 now only sends a PING frame to the backend when there is not already one

in flight. [Stefan Eissing]

*) mod_proxy_http2: fixed an issue where a proxy_http2 handler entered an infinite

loop when encountering certain errors on the backend connection.

See <https://bz.apache.org/bugzilla/show_bug.cgi?id=63170>. [Stefan Eissing]

  1. … 4 more files in changeset.
mod_proxy_http: rework the flushing strategy when forwarding the request body.

Since the forwarding of 100-continue (end to end) in r1836588, we depended on

reading all of the requested HUGE_STRING_LEN bytes to avoid the flushes, but

this is a bit fragile.

This commit introduces the new stream_reqbody_read() function which will try a

nonblocking read first and, if it fails with EAGAIN, will flush on the backend

side before blocking for the next client side read.

We can then use it in stream_reqbody_{chunked,cl}() to flush client forwarded

data only when necessary. This both allows "optimal" flushing and simplifies

code (note that spool_reqbody_cl() also makes use of the new function but not

its nonblocking/flush functionality, thus only for consistency with the two

others, simplification and common error handling).

Also, since proxy_http_req_t::flushall/subprocess_env::proxy-flushall are now

meaningless (and unused) on the backend side, they are renamed respectively to

prefetch_nonblocking/proxy-prefetch-nonblocking, and solely determine whether

to prefetch in nonblocking mode or not. These flags were trunk only and may

not be really useful if we decided to prefetch in nonblocking mode in any case,

but for 2.4.x the opt-in looks wise.

  1. … 1 more file in changeset.
*) mod_http2: Configuration directoves H2Push and H2Upgrade can now be specified per

Location/Directory, e.g. disabling PUSH for a specific set of resources. [Stefan Eissing]

*) mod_http2: HEAD requests to some module such as mod_cgid caused the stream to

terminate improperly and cause a HTTP/2 PROTOCOL_ERROR.

Fixes <https://github.com/icing/mod_h2/issues/167>. [Michael Kaufmann]

  1. … 29 more files in changeset.
mod_http2: mergine trunk+2.4.x code divergences back into a single source with proper MMN checks.

  1. … 4 more files in changeset.
mod_http2/mod_proxy_http2: add new module flags
  1. … 1 more file in changeset.
On the trunk:

mod_http2: removing comments that documented that greenbytes has untransferable copyright to the sources. The rights, of course, remain unaffected, but maybe some people can sleep better.

  1. … 51 more files in changeset.
mod_proxy: allow SSLProxyCheckPeer* usage for all proxy modules.

PR 61857.

Proposed by: Markus Gausling <markusgausling googlemail.com>

Reviewed by: ylavic

  1. … 3 more files in changeset.
correct copyright/license headers

  1. … 23 more files in changeset.
On the trunk:

mod_proxy_http2: 1 is true.

On the trunk:

mod_proxy_http2: Reliability of reconnect handling improved.

  1. … 5 more files in changeset.
On the trunk:

mod_http2/mod_proxy_http2: less read attempts on bucket beams that already

delivered EOS/headers. Fixed bug in re-attempting proxy request after

connection error.

  1. … 3 more files in changeset.
On the trunk:

mod_proxy_http2: fixed retry behaviour when frontend connection uses

http/1.1.

  1. … 1 more file in changeset.
On the trunk:

mod_proxy_http2: support for ProxyPreserverHost directive.

  1. … 2 more files in changeset.
mod_proxy_http2: not forwarding any 1xx responses on frontend HTTP/1.x connections. Unless its 100 and the client is expecting that.

  1. … 3 more files in changeset.
mod_http2: proper parsing and forwarding of multiple or unnaounce 1xx responses

mod_proxy_http2: improved robustness when main connection gets aborted

  1. … 14 more files in changeset.
mod_http2/mod_proxy_http2: proper 100-continue handling up to backend, more robustness on connection reuse with PING frames

  1. … 20 more files in changeset.
mod_proxy_http2: renaming duplicate symbol clash between h2_proxy_util and h2_util externals
  1. … 7 more files in changeset.
mod_http2: reverting int->apr_uint32_t changes of v1.7.x

  1. … 23 more files in changeset.
mod_proxy_http2: don't use ap_proxy_ssl_connection_cleanup(), there may be

data available on the backend connection before we reuse it (e.g. PING or SETTINGS change).

mod_proxy_http2: fixed retry behaviour when proxy engine needs to retry its base request on a new connection

  1. … 2 more files in changeset.
mod_proxy_http2: fix flow control when frontend connection is HTTP/1.1, patch by Evgeny Kotkov
  1. … 3 more files in changeset.
mod_proxy_http2: own h2_proxy_util.c source file to avoid duplicate use of h2_util.c, updated dsp and cmake as well as configure files
  1. … 9 more files in changeset.
The answer to the question appears to be in 2.4.21, drop h2_casecmpstr fork
  1. … 3 more files in changeset.
Not sure how these came to be checked in as non-text
  1. … 17 more files in changeset.