mirror of
https://github.com/apache/httpd.git
synced 2025-08-07 04:02:58 +03:00
Virtual host config file fix backported from v1.3
PR: Obtained from: Reviewed by: git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@88485 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
@@ -421,12 +421,38 @@ static void * create_proxy_config(apr_pool_t *p, server_rec *s)
|
||||
ps->cache_completion = DEFAULT_CACHE_COMPLETION;
|
||||
ps->domain = NULL;
|
||||
ps->viaopt = via_off; /* initially backward compatible with 1.3.1 */
|
||||
ps->viaopt_set = 0; /* 0 means default */
|
||||
ps->req = 0;
|
||||
ps->req_set = 0;
|
||||
ps->recv_buffer_size = 0; /* this default was left unset for some reason */
|
||||
ps->recv_buffer_size_set = 0;
|
||||
|
||||
ap_cache_init(&ps->cache, "mod_proxy cache", s);
|
||||
return ps;
|
||||
}
|
||||
|
||||
static void * merge_proxy_config(apr_pool_t *p, void *basev, void *overridesv)
|
||||
{
|
||||
proxy_server_conf *ps = ap_pcalloc(p, sizeof(proxy_server_conf));
|
||||
proxy_server_conf *base = (proxy_server_conf *) basev;
|
||||
proxy_server_conf *overrides = (proxy_server_conf *) overridesv;
|
||||
|
||||
ps->proxies = ap_append_arrays(p, base->proxies, overrides->proxies);
|
||||
ps->aliases = ap_append_arrays(p, base->aliases, overrides->aliases);
|
||||
ps->raliases = ap_append_arrays(p, base->raliases, overrides->raliases);
|
||||
ps->noproxies = ap_append_arrays(p, base->noproxies, overrides->noproxies);
|
||||
ps->dirconn = ap_append_arrays(p, base->dirconn, overrides->dirconn);
|
||||
ps->nocaches = ap_append_arrays(p, base->nocaches, overrides->nocaches);
|
||||
ps->allowed_connect_ports = ap_append_arrays(p, base->allowed_connect_ports, overrides->allowed_connect_ports);
|
||||
|
||||
ps->domain = (overrides->domain == NULL) ? base->domain : overrides->domain;
|
||||
ps->viaopt = (overrides->viaopt_set == 0) ? base->viaopt : overrides->viaopt;
|
||||
ps->req = (overrides->req_set == 0) ? base->req : overrides->req;
|
||||
ps->recv_buffer_size = (overrides->recv_buffer_size_set == 0) ? base->recv_buffer_size : overrides->recv_buffer_size;
|
||||
|
||||
return ps;
|
||||
}
|
||||
|
||||
static const char *
|
||||
add_proxy(cmd_parms *cmd, void *dummy, const char *f1, const char *r1)
|
||||
{
|
||||
@@ -659,6 +685,7 @@ static const char *
|
||||
ap_get_module_config(parms->server->module_config, &proxy_module);
|
||||
|
||||
psf->req = flag;
|
||||
psf->req_set = 1;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -673,6 +700,7 @@ static const char *
|
||||
}
|
||||
|
||||
psf->recv_buffer_size = s;
|
||||
psf->recv_buffer_size_set = 1;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -695,6 +723,7 @@ static const char*
|
||||
"off | on | full | block";
|
||||
}
|
||||
|
||||
psf->viaopt_set = 1;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -760,7 +789,7 @@ module AP_MODULE_DECLARE_DATA proxy_module =
|
||||
NULL, /* create per-directory config structure */
|
||||
NULL, /* merge per-directory config structures */
|
||||
create_proxy_config, /* create per-server config structure */
|
||||
NULL, /* merge per-server config structures */
|
||||
merge_proxy_config, /* merge per-server config structures */
|
||||
proxy_cmds, /* command table */
|
||||
register_hooks
|
||||
};
|
||||
|
@@ -184,6 +184,7 @@ typedef struct {
|
||||
apr_array_header_t *allowed_connect_ports;
|
||||
const char *domain; /* domain name to use in absence of a domain name in the request */
|
||||
int req; /* true if proxy requests are enabled */
|
||||
char req_set;
|
||||
float cache_completion; /* Force cache completion after this point */
|
||||
enum {
|
||||
via_off,
|
||||
@@ -191,7 +192,9 @@ typedef struct {
|
||||
via_block,
|
||||
via_full
|
||||
} viaopt; /* how to deal with proxy Via: headers */
|
||||
char viaopt_set;
|
||||
size_t recv_buffer_size;
|
||||
char recv_buffer_size_set;
|
||||
ap_cache_handle_t *cache;
|
||||
} proxy_server_conf;
|
||||
|
||||
|
Reference in New Issue
Block a user