From: Mladen Turk Date: Sat, 11 Sep 2004 09:31:10 +0000 (+0000) Subject: Do not add forward proxy to other proxies. Use new function to X-Git-Tag: 2.1.1~303 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dd00fb7d89367ce3159c0255196c1a941e7c2128;p=thirdparty%2Fapache%2Fhttpd.git 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 --- diff --git a/modules/proxy/mod_proxy.c b/modules/proxy/mod_proxy.c index d16ae55b5f2..22607ade945 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 caba7ad3621..24fb7c1511a 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 66e9438ba61..4f743621d89 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) {