Checkout Tools
  • last updated 7 hours ago
Constraints: committers
Constraints: files
Constraints: dates

Changeset 1744951 is being indexed.

Merge r1722177, r1722195, r1722229, r1722320, r1722328, r1722334, r1722350, r1722351, r1722358, r1722377, r1723953, r1724879, r1724992, r1724993, r1724995, r1725018, r1725031, r1725120, r1725328, r1725387, r1725489, r1725498, r1725499, r1725523, r1725545, r1725567, r1725581, r1725602, r1725822, r1725967, r1726038, r1726049, r1726051, r1726052, r1726055, r1725090, r1728326, r1737020 from trunk:

Commit framework impl of health-check module plus

required changes. The actual health checking is

currently in progress, but wanted to add in at

this stage.

Make aware of new status: Failed Health Check.

Store the number of current passes/fails in shm

finish looping logic... place-holder for actual checking

Better check

move to per server conf, useful for adding HealthCheckCondition

Now implement the condition ruleset definition. The

actual checking will be done in the actual health check


just check watched servers... use 'hc' prefix for sub directives

Check that we have names for both templates and


command changes

Don't bother w/ methods that return bodies. We don't

handle them now anyway.

Use enums and structs to keep things better organized

1st cut of 'simple' tcp check... We reuse various proxy

function and so this *could* be more streamlined, but

use this to show how the other would work, since we need

brigades, SSL/TLS support, etc.

Since every check needs this, do this in the main

check loop. Allows some optimizations.

move scope

pull this out... large enough for a func

Move to a set of health check workers, mapping to

each worker itself, instead of a single reused generic


some ordering optimization

Make balancer manager health-check aware

And we now allow for health checks via OPTIONS *

Leverage the OPTIONS code for HEAD as well...

So we now support: TCP, OPTIONS and HEAD.

Right now, anything other than an error (even a 404)

is consider a PASS.

Fill in APLOGNO.

I hope that doesn't result in merge trouble

for Jim.

Open up hook/scar to allow for passes/fails and

method to be changed via bal-man...

OPTIONS/HEAD proxy function should be diff from simple TCP check

For OPTIONS and HEAD, only 2xx and 3xx are considered "passing"

(until I implement the conditions expr testing)... honor

the pass/fail count and LOG_INFO when the health check enables

or disables a backend worker.

Start impl of expr conditions for runtime checks

Adjust log levels

correct error string

Use worker status character defines taken

from mod_proxy.h instead of explicit characters.

Noted by rpluem.

With the updated ap_expr, we can now check for the

returned response body, stored in kept_body

Assign log message tags

Implement expr lookup in mod_proxy_hcheck for

variables whose names start with "HC_" and for

the new function hc().

Currently only HC_BODY and hc(body) are supported.

Both return the saved body of the health check

response to be used in an expr that decides about

success of a check.

Fix copy&paste error in new function.

Try fixing new proxy_hcheck expr extension.

Interestingly mod_ssl using NULL as well,

but some other module I wrote uses parms->name.


clash :)

Enabling a worker via health-check also moves them out of

ERROR more (which may have been set via the static

"health" check done via mod_proxy).

Some flow improvements...

Submitted by: jim, rjung, jim, jim, jim, jim, jim, jim, rjung, jim, jim, rjung, rjung, rjung, jim, jim, olegk, jim, jim

Reviewed/backported by: jim

  1. … 350 more files in changeset.
Document incompatible API change which happened

in 2.4.7. The change affects third party modules

using the mod_proxy shared memory structure

proxy_worker_shared. Examples are third party

balancer lbmethod modules.

  1. … 2 more files in changeset.
Merge r1729826, r1729847, r1732986, r1733056 from trunk:

mod_proxy: Play/restore the TLS-SNI on new backend connections which

had to be issued because the remote closed the previous/reusable one

during idle (keep-alive) time.

mod_proxy: follow up to r1729826: really copy conn->ssl_hostname.

mod_proxy: follow up to r1729826 + r1729847.

Adjust stacked ssl_hostname maximum size.

mod_proxy: follow up to r1729826 + r1729847 + r1732986.

Don't use magic constants.

Submitted by: ylavic

Reviewed/backported by: jim

  1. … 4 more files in changeset.
mod_proxy_wstunnel, mod_proxy_connect: Use the correct pool and allocator

lifetime when sending brigades and buckets down the filter chain

  1. … 5 more files in changeset.
mod_proxy_http: Use the "Connection: close" header for requests to

backends not recycling connections (disablereuse), including the default

reverse and forward proxies.

Submitted by: ylavic (and trawick for an old helper function)

Reviewed by: rjung, covener

  1. … 7 more files in changeset.
Merge the following revisions from trunk:

trunk patch: (rewrite+UDS) ('using default worker' msg tweak) (tcp reuse) (uds reuse) (uds reuse fix)

+ 1 additional de_socketfy call in mod_proxy

  1. … 9 more files in changeset.
Merge r1598946, r1602989 from trunk:

Fix computation of the size of 'struct sockaddr_un' when passed to 'connect()'.

Use the same logic as the one in ' in 'proxy_util.c'.

mod_proxy: Don't limit the size of the connectable Unix Domain Socket paths.

Since connect() to UDS path is used at several places, introduce

ap_proxy_connect_uds() in proxy_util.

Submitted by: jailletc36, ylavic

Reviewed/backported by: jim

  1. … 7 more files in changeset.
Merge r1592511, r1592514 from trunk:

reformat only (get rid of unnecessary block scope)

Clarify an existing requirement of the server_portstr parameter

to ap_proxy_determine_connection(): it must be a buffer of at

least one byte in size.

(And don't bother with using strcpy in order to zap a string.)

Submitted by: trawick

Reviewed/backported by: jim

  1. … 3 more files in changeset.
Merge r1543174, r1560367, r1560546, r1560689, r1560979, r1561137, r1561660 from trunk:

Correct logic... if this is a UDS socket, then bypass all


make mod_rewrite and mod_proxy UDS work together...

Adjust url as required, following what we did to r->filename.

Save some cycles when searching...

Tuck away UDS path in request-rec, since worker isn't

thread-safe. Protect from NULL refs.

Reflow logic... pull UDS stuff out

handle leak. thx to Y^2

r->filename should maintain the proxy: prefix for PHP-FPM

Reviewed/backported by: jim

  1. … 5 more files in changeset.
Merge r1572630, r1572611, r1572967, r1573229 from trunk:

Redo what was reverted in r1572627.

Don't reuse a SSL backend connection whose SNI differs. PR 55782.

This may happen when ProxyPreserveHost is on and the proxy-worker

handles connections to different Hosts.

Follows up r1572606.

MMN minor bump required by proxy_conn_rec change.

mod_proxy: follows up r1572630.

Don't reuse a SSL backend connection with no SNI for a request requiring SNI.

mod_proxy: Add comment and avoid ternary operator as condition (no functional change).

Submitted by: ylavic

Reviewed/backported by: jim

  1. … 5 more files in changeset.
Merge r1542562 from trunk:

We were not being consistent between http and others

if we added the default port or not during the canonizing

phase... Baseline the http method (don't add unless the

port provided isn't the default).

Reviewed/backported by: jim

  1. … 12 more files in changeset.
Merge r1451633, r1451905, r1451921, r1452259, r1453981, r1501913, r1513508, r1531340, r1531370, r1531962, r1533065, r1540052 from trunk:

Add in rough uds support (Bugx 54101) from Blaise Tarr <>

Make AF_UNIX aware... fix Windows/Netware??

Follow-up to r1451905 to fix NetWare/Windows compilation.

apr trunk-able

message tag for dom sock

Note about new UDS support

UDS subsequent request on a connection fix

Reformat the UDS support inline with a new naming structure.

Use a flag for speed for testing.

syntax sugar... if the worker is associated w/ a UDS,

then make sure the log reporting has a visual clue.

Ensure that userland format of UDS is the same as how it is

configured, no matter how we store and use it internally.

Eclipse code analysis warning

UDS urls need to be desockified when configuring...

Submitted by: jim, fuankg, jim, jim, druggeri, druggeri, jim, jim, jim, jim, jim

Reviewed/backported by: jim

  1. … 13 more files in changeset.
Merge r1554300, r1554301, r1554994, r1555266 from trunk:

core: Support named groups and backreferences within the LocationMatch,

DirectoryMatch, FilesMatch and ProxyMatch directives.

Documentation for the support of named groups and backreferences.

c89 fix

Add a "MATCH_" prefix to variables set within


Submitted by: minfrin, covener, minfrin

Reviewed/backported by: jim

  1. … 17 more files in changeset.
Fix comment (was r1513458 in trunk)
Merge r1481891, r1482075, r1482170, r1482555 from trunk:

mod_proxy: Ensure we don't attempt to amend a table we are iterating

through, ensuring that all headers listed by Connection are removed.

mod_proxy, mod_proxy_http: Connection headers must be stripped on the way

in and out, support an optional function to handle this.

hunk 1: C89 please;

hunk 2: optional functions are usually declared static.

mod_proxy: Make sure we skip empty tokens when parsing the Connection


Submitted by: minfrin, fuankg, minfrin

Reviewed/backported by: jim

  1. … 6 more files in changeset.
Merge r1480627, r1482859, r1483190, r1484343, r1500437 from trunk:

Mod_proxy used the global pool w/o mutex. fix.

mod_proxy: Use a global mutex for handling workers.

add in child_init which is needed

Add in logno's

conf->mutex is not used... Also, ensure that pool

use is protected

Submitted by: jim, minfrin, jim, jim, jim

Reviewed/backported by: jim

  1. … 6 more files in changeset.
Merge r1452911, r1452949, r1452954, r1453022, r1453574, r1453875, r1453876, r1453963, r1454386, r1454414, r1454415, r1458285, r1458447 from trunk:

Rough start for simple, tunneling websocket proxy support.

Compiles at this stage and that's all I know :)

force correct scheme info

We need to ensure a conn_rec

Work around blocking issues...

And now pass the initial request to the backend...

I dislike this duplication of code from mod_proxy_http()

but maybe it's inevitable. I may create ap_proxy_create_headerb()

to create a header brigade that both modules can use.

Pull out duplicated code to proxy_util...

rename extension module... tunnel is more accurate

log nums

"final" rename :)

don't strip these, ensure that they exist.


bypass reqtimeout for websockets

Keep mod_req clear. Simply scan thru input filters and

remove it within the ws submodule. Nasty, but it keeps

mod_req untouched (for now ;) )

Reviewed/backported by: jim

  1. … 20 more files in changeset.
Merge r1387603, r1388029, r1420124, r1421288, r1421912, r1422943, r1422980, r1430575, r1439404 from trunk:

wtf are we doing merging in these from the parent??

These are server specific!

OK, enable/allow previous broken, bad behavior iff the user

really, really wants it. And warn that b-m isn't recommended

in those cases.

rjung's suggestions...

inherit inherit

Use inherit_set to let the global server set

the default for all vhosts.

Otherwise inherit would need to be disabled

redundantly in each vhost.

restrict inherit control to those fields that "require" it...

Redfine - we are just worried about balancers and workers, so have the directive clear about that.


ProxyPassInherit directive

Submitted by: jim, rjung, jim, jim, jim, jim

Reviewed/backported by: jim

  1. … 9 more files in changeset.
mod_proxy_balancer: Add failontimeout parameter. Timeout will put worker

in error state if an IO timeout is detected.

trunk patch:

2.4.x patch:

Submitted by: druggeri

Reviewed by: jim, minfrin

  1. … 6 more files in changeset.
Merge r1387110, r1387444, r1387979, r1387607, r1387693, r1407085, r1421953 from trunk:

Persist local balancer-manager changes across restart/graceful.

Use identifying server_rec info when we know we have

unique and useful data :)

fix clang warning (dead initialization)

Log whether or not the restore from shm actually

resulted in a match of shm data, or whether it

was stale.

and this one as well... persist isn't inherited

better logging for re-use/use of shm

Allow for searching w/i shm slots for a specific worker and balancer

Reviewed/backported by: jim

  1. … 10 more files in changeset.
Merge r1404653 from trunk:

Allow for setting of sticky session split char...

Bugz 53893

Reviewed/backported by: jim

  1. … 10 more files in changeset.
  1. … 6 more files in changeset.
Merge r1306409:

* Add the forcerecovery balancer parameter that determines if recovery for

balancer workers without considering the retry value of workers is enforced.

There might be cases where an already overloaded backend can get into deeper

trouble if the recovery of all workers is enforced without considering the

retry parameter of each worker

Committed by: rpluem

Reviewed by: rpluem, covener, sf

  1. … 7 more files in changeset.
Merge r1242351 from trunk:

Handle cases, esp when using mod_proxy_fcgi, when we do not

want SCRIPT_FILENAME to include the query string.

Reviewed/backported by: jim

  1. … 4 more files in changeset.
Cure size_t abuse; Backport r1227856
  1. … 3 more files in changeset.

mod_proxy: Remove dead code from the public API, move single use code out

of the public API, remove redundant code from the public API.

mod_cache: Remove redundant code from the public API.

  1. … 9 more files in changeset.

mod_proxy: Make ap_proxy_retry_worker() into an optional function. Allows

mod_lbmethod_bybusyness, mod_lbmethod_byrequests, mod_lbmethod_bytraffic

and mod_lbmethod_heartbeat to be loaded without mod_proxy yet being present,

which happens when modules are loaded in alphabetical order.

  1. … 9 more files in changeset.
Merge r1208897 from trunk:

Use 2 sep hashing functions to account for collisions...

Safe enough

Reviewed/backported by: jim

  1. … 2 more files in changeset.
Merge r1208067, r1208068, r1208069 from trunk:


Some optimization... we have a hash, use it. Quicker than all

these string comparisons.

Ensure casing doesn't matter... (we know balancer->s->name is


Reviewed/backported by: jim

  1. … 2 more files in changeset.
Merge r1207926 from trunk:

Logic which makes the balancer "active" or not... so we can turn them

off and on as needed.

Reviewed/backported by: jim

  1. … 3 more files in changeset.