mod_proxy: fix proxy connection cleanup from an n+2 pool.
When connection_destructor() is called after pchild is gone, we can't dereference worker->cp anymore. This happens is debug/one_process mode only, if we exit by calling apr_terminate() or clearing the process pool directly.
Fix this by NULL-ing worker->cp in conn_pool_cleanup(), and by registering it as a pre_cleanup.
Delay some memory allocation.
If this handler will not handle the request, no need to waste bytes in the request pool.
Add error messages and return bad request.
fix incorrect rv. Sorry.
Follow up to r1847232. There is no point to use "old" numbers in recent commit.
Also avoid number duplication. The messages are the same but in different code path, so having different numbers makes sense. This also avoids a warning when running: make update-log-msg-tags
Make proxy modules compile if APR_HAS_THREADS is not defined.
restore use of global mutex under !APR_HAS_THREADS
followup to r1852442 which appears to have been too agressive in wrapping blocks with #if APR_HAS_THREADS. With !APR_HAS_THREADS a global mutex is a proc mutex.
* Add back logging goodness
Add back logging goodness added by covener in r1865938.
Fix pool concurrency problems
Create a subpool of the connection pool for worker scoped DNS resolutions. This is needed to avoid race conditions in using the connection pool by multiple threads during ramp up.
Recheck after obtaining the lock if we still need to do things or if they were already done by another thread while we were waiting on the lock.
* modules/proxy/proxy_util.c: Create a subpool of the connection pool for worker scoped DNS resolutions and use it.
* modules/proxy/mod_proxy.h: Define AP_VOLATILIZE_T and add dns_pool to struct proxy_conn_pool.
* modules/proxy/mod_proxy_ftp.c: Use dns_pool and consider that worker->cp->addr is volatile in this location of the code.