ps->timeout_set = 0;
ps->badopt = bad_error;
ps->badopt_set = 0;
+ ps->slotmem_loc = NULL;
ps->pool = p;
return ps;
ps->timeout= (overrides->timeout_set == 0) ? base->timeout : overrides->timeout;
ps->badopt = (overrides->badopt_set == 0) ? base->badopt : overrides->badopt;
ps->proxy_status = (overrides->proxy_status_set == 0) ? base->proxy_status : overrides->proxy_status;
+ ps->slotmem_loc = (overrides->slotmem_loc == NULL) ? base->slotmem_loc : overrides->slotmem_loc;
ps->pool = p;
return ps;
}
return NULL;
}
+static const char *
+ set_slotmem_loc(cmd_parms *cmd, void *dummy, const char *arg)
+{
+ server_rec *s = cmd->server;
+ proxy_server_conf *conf =
+ (proxy_server_conf *) ap_get_module_config(s->module_config, &proxy_module);
+ conf->slotmem_loc = apr_pstrdup(cmd->pool, arg);
+ return NULL;
+}
+
static void ap_add_per_proxy_conf(server_rec *s, ap_conf_vector_t *dir_config)
{
proxy_server_conf *sconf = ap_get_module_config(s->module_config,
"Configure Status: proxy status to one of: on | off | full"),
AP_INIT_RAW_ARGS("ProxySet", set_proxy_param, NULL, RSRC_CONF|ACCESS_CONF,
"A balancer or worker name with list of params"),
+ AP_INIT_TAKE1("ProxySlotMemLoc", set_slotmem_loc, NULL, RSRC_CONF,
+ "Location of the shared area to store the workers information: file-path (default: anonymous"),
{NULL}
};
static int proxy_post_config(apr_pool_t *pconf, apr_pool_t *plog,
apr_pool_t *ptemp, server_rec *s)
{
+ proxy_server_conf *sconf = ap_get_module_config(s->module_config,
+ &proxy_module);
proxy_ssl_enable = APR_RETRIEVE_OPTIONAL_FN(ssl_proxy_enable);
proxy_ssl_disable = APR_RETRIEVE_OPTIONAL_FN(ssl_engine_disable);
proxy_ssl_val = APR_RETRIEVE_OPTIONAL_FN(ssl_var_lookup);
/* if we have a memory provider create the comarea here */
- proxy_create_comarea(pconf);
+ proxy_create_comarea(pconf, sconf->slotmem_loc);
/* Also fill the comarea of the health-checker */
proxy_checkstorage_add_workers(pconf, s);
status_full
} proxy_status; /* Status display options */
char proxy_status_set;
+ char *slotmem_loc;
apr_pool_t *pool; /* Pool used for allocating this struct */
} proxy_server_conf;
/* proxy_util.c */
-PROXY_DECLARE(void) proxy_create_comarea(apr_pool_t *pconf);
+PROXY_DECLARE(void) proxy_create_comarea(apr_pool_t *pconf, char *name);
PROXY_DECLARE(void) proxy_checkstorage_add_workers(apr_pool_t *pconf, server_rec *s);
PROXY_DECLARE(void) proxy_lookup_storage_provider();
ap_slotmem_t *myscore;
apr_status_t rv;
apr_size_t item_size = sizeof(proxy_worker_stat);
+ proxy_server_conf *sconf = ap_get_module_config(s->module_config,
+ &proxy_module);
if (worker->s && PROXY_WORKER_IS_INITIALIZED(worker)) {
/* The worker share is already initialized */
/* Use storage provider when a storage is existing */
if (storage) {
- rv = storage->ap_slotmem_create(&myscore, "proxy/comarea", item_size, ap_proxy_lb_workers(), conf->pool);
+ rv = storage->ap_slotmem_create(&myscore, sconf->slotmem_loc, item_size, ap_proxy_lb_workers(), conf->pool);
if (rv == APR_SUCCESS)
rv = storage->ap_slotmem_mem(myscore, worker->id, &score);
if (rv != APR_SUCCESS)
}
/* Create shared area (comarea) called from mod_proxy post_config */
-PROXY_DECLARE(void) proxy_create_comarea(apr_pool_t *pconf)
+PROXY_DECLARE(void) proxy_create_comarea(apr_pool_t *pconf, char *name)
{
ap_slotmem_t *myscore;
apr_size_t item_size = sizeof(proxy_worker_stat);
if (checkstorage)
item_size = checkstorage->getentrysize();
if (storage)
- storage->ap_slotmem_create(&myscore, "proxy/comarea", item_size, ap_proxy_lb_workers(), pconf);
+ storage->ap_slotmem_create(&myscore, name, item_size, ap_proxy_lb_workers(), pconf);
}
/* get the storage provider for the shared area called from mod_proxy pre_config */
PROXY_DECLARE(void) proxy_lookup_storage_provider()