From dd00fb7d89367ce3159c0255196c1a941e7c2128 Mon Sep 17 00:00:00 2001 From: Mladen Turk Date: Sat, 11 Sep 2004 09:31:10 +0000 Subject: [PATCH] Do not add forward proxy to other proxies. Use new function to create the worker that isn't by default added to the list of other workers. This enalbles mixing forward and reverse proxy functionality on the same box. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@105070 13f79535-47bb-0310-9956-ffa450edef68 --- modules/proxy/mod_proxy.c | 16 +++++++--------- modules/proxy/mod_proxy.h | 7 +++++++ modules/proxy/proxy_util.c | 10 ++++++++++ 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/modules/proxy/mod_proxy.c b/modules/proxy/mod_proxy.c index d16ae55b5f..22607ade94 100644 --- a/modules/proxy/mod_proxy.c +++ b/modules/proxy/mod_proxy.c @@ -1114,19 +1114,17 @@ static const char * static const char * set_proxy_req(cmd_parms *parms, void *dummy, int flag) { - const char *err; proxy_server_conf *psf = ap_get_module_config(parms->server->module_config, &proxy_module); psf->req = flag; psf->req_set = 1; - if (flag) { - /* Add default forward proxy worker */ - if ((err = ap_proxy_add_worker(&(psf->forward), parms->pool, - psf, "*://*:0"))) { - return apr_pstrcat(parms->temp_pool, "ProxyRequests ", err, NULL); - } + if (flag && !psf->forward) { + psf->forward = ap_proxy_create_worker(parms->pool); + psf->forward->name = "proxy:forward"; + psf->forward->hostname = "*"; + psf->forward->scheme = "*"; /* Do not disable worker in case of errors */ psf->forward->status = PROXY_WORKER_IGNORE_ERRORS; @@ -1610,8 +1608,8 @@ static int proxy_post_config(apr_pool_t *pconf, apr_pool_t *plog, ap_proxy_initialize_worker(worker, s); worker++; } - - ap_proxy_initialize_worker(conf->forward, s); + if (conf->forward) + ap_proxy_initialize_worker(conf->forward, s); return OK; } diff --git a/modules/proxy/mod_proxy.h b/modules/proxy/mod_proxy.h index caba7ad362..24fb7c1511 100644 --- a/modules/proxy/mod_proxy.h +++ b/modules/proxy/mod_proxy.h @@ -409,6 +409,13 @@ PROXY_DECLARE(const char *) ap_proxy_add_worker(proxy_worker **worker, proxy_server_conf *conf, const char *url); +/** + * Create new worker + * @param p memory pool to allocate worker from + * @return new worker + */ +PROXY_DECLARE(proxy_worker *) ap_proxy_create_worker(apr_pool_t *p); + /** * Initize the worker * @param worker the new worker diff --git a/modules/proxy/proxy_util.c b/modules/proxy/proxy_util.c index 66e9438ba6..4f743621d8 100644 --- a/modules/proxy/proxy_util.c +++ b/modules/proxy/proxy_util.c @@ -1149,6 +1149,16 @@ PROXY_DECLARE(const char *) ap_proxy_add_worker(proxy_worker **worker, return NULL; } +PROXY_DECLARE(proxy_worker *) ap_proxy_create_worker(apr_pool_t *p) +{ + + proxy_worker *worker; + worker = (proxy_worker *)apr_pcalloc(p, sizeof(proxy_worker)); + init_conn_pool(p, worker); + + return worker; +} + PROXY_DECLARE(void) ap_proxy_add_worker_to_balancer(apr_pool_t *pool, proxy_balancer *balancer, proxy_worker *worker) { -- 2.40.0