[prev in list] [next in list] [prev in thread] [next in thread] 

List:       apache-modperl
Subject:    [PATCH] fix for dso/mod_perl
From:       Doug MacEachern <dougm () pobox ! com>
Date:       1998-08-31 17:50:24
[Download RAW message or body]

I finnally dug into this dso/mod_perl problem and found a fix, but not sure
if it's the right one, mostly because I can't imagine why mod_perl is the
only module bitten by this.  I started httpd in the debugger, with
breakpoints in mod_so.c:load_module() and http_config.c:ap_add_module().
On the first pass, during startup, I see 
top_module == &perl_module, on the second pass, top_module ==
&setenvif_module.  
Then, the httpd goes on to choke on any mod_perl directive, since mod_perl
is not in the top_module list.  When inside ap_add_loaded_module(), I see
this:
     if (m->next == NULL) {
        m->next = top_module;
        top_module = m;
    }

but, when mod_perl is being added, m->next != NULL, the patch below to
ap_remove_module() fixes this problem and mod_perl/dso passes 'make test'
100% for me.  Thoughts, please?

-Doug

 --- http_config.c       1998/08/13 01:55:06     1.125
+++ http_config.c       1998/09/01 00:38:31
@@ -598,6 +598,7 @@
     if (modp == m) {
        /* We are the top module, special case */
        top_module = modp->next;
+       m->next = NULL;
     }
     else {
        /* Not the top module, find use. When found modp will

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic