Changes with Apache 2.3.0
[Remove entries to the current 2.0 and 2.2 section below, when backported]
+ *) mod_dbd: Stash DBD connections in request_config of initial request
+ only, or else sub-requests and internal redirections may cause
+ entire DBD pool to be stashed in a single HTTP request. [Chris Darroch]
+
*) mod_cache: Correctly cache objects whose URL query string has been
modified by mod_rewrite. PR 40805. [Ruediger Pluem]
DBD_DECLARE_NONSTD(ap_dbd_t *) ap_dbd_acquire(request_rec *r)
{
svr_cfg *svr;
- dbd_pool_rec *req = ap_get_module_config(r->request_config, &dbd_module);
+ dbd_pool_rec *req;
+
+ while (!ap_is_initial_req(r)) {
+ if (r->prev) {
+ r = r->prev;
+ }
+ else if (r->main) {
+ r = r->main;
+ }
+ }
+
+ req = ap_get_module_config(r->request_config, &dbd_module);
if (!req) {
req = apr_palloc(r->pool, sizeof(dbd_pool_rec));
req->conn = ap_dbd_open(r->pool, r->server);
DBD_DECLARE_NONSTD(ap_dbd_t *) ap_dbd_acquire(request_rec *r)
{
svr_cfg *svr;
- ap_dbd_t *ret = ap_get_module_config(r->request_config, &dbd_module);
+ ap_dbd_t *ret;
+
+ while (!ap_is_initial_req(r)) {
+ if (r->prev) {
+ r = r->prev;
+ }
+ else if (r->main) {
+ r = r->main;
+ }
+ }
+
+ ret = ap_get_module_config(r->request_config, &dbd_module);
if (!ret) {
svr = ap_get_module_config(r->server->module_config, &dbd_module);
ret = ap_dbd_open(r->pool, r->server);