Commit f67386df authored by Jeff Trawick's avatar Jeff Trawick
Browse files

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
parent 68fa3773
Loading
Loading
Loading
Loading
+10 −5
Original line number Diff line number Diff line
@@ -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) {
@@ -534,7 +536,10 @@ static void cgid_init(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server
        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)