From: Jeff Trawick Date: Wed, 13 Dec 2000 04:03:19 +0000 (+0000) Subject: Get mod_cgid to work as a DSO by changing the way it X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f67386df0bd20fce2e01019cc86e30a918e80c5c;p=apache Get mod_cgid to work as a DSO by changing the way it keeps track of whether or not its post config hook has been called before. Instead of a static variable (which is replaced when the DSO is loaded a second time), use userdata in the process pool. Still to go: mod_file_cache, mod_rewrite git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@87321 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/generators/mod_cgid.c b/modules/generators/mod_cgid.c index c514ba80bf..5a770e1713 100644 --- a/modules/generators/mod_cgid.c +++ b/modules/generators/mod_cgid.c @@ -107,7 +107,6 @@ module AP_MODULE_DECLARE_DATA cgid_module; static void cgid_init(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *main_server); -static int once_through = 0; static apr_pool_t *pcgi; @@ -510,12 +509,15 @@ static int cgid_server(void *data) return -1; } -static void cgid_init(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *main_server) +static void cgid_init(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, + server_rec *main_server) { pid_t pid; apr_proc_t *procnew; + void *data; - if (once_through > 0) { + apr_get_userdata(&data, "cgid_init", main_server->process->pool); + if (data != NULL) { apr_create_pool(&pcgi, p); if ((pid = fork()) < 0) { @@ -533,8 +535,11 @@ static void cgid_init(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server #if APR_HAS_OTHER_CHILD apr_register_other_child(procnew, cgid_maint, NULL, NULL, p); #endif - } - else once_through++; + } + else { + apr_set_userdata((const void *)1, "cgid_init", apr_null_cleanup, + main_server->process->pool); + } } static void *create_cgid_config(apr_pool_t *p, server_rec *s)