On Wed, 2003-06-11 at 20:14, Geoffrey Young wrote:
> > if(!perl_module_is_loaded(*name)) {
>
> > PerlLogHandler My::Module->somehandler
> > or
> > PerlLogHandler $My::Obj->somehandler
>
>
> >
> > First of them is that My::Module->somehandler gets called on startup (or
> > once per request if in a .htaccess) without a valid $r as argument.
> >
> > Second one, the require call itself will most likely fail, trying to
> > require the value of Apache::OK.
> >
> > I propose to fix mp_preload_module to be a bit smarter and skip those
> > odd cases...
> >
> > But I wonder how come this issue hasn't been reported already? Am I
> > missing something terribly simple here?
>
> I suspect the reason it hasn't been reported is because it tends to fix
> itself :) method handlers (in mp1 at least) require the module to be
> preloaded - otherwise mod_perl doesn't resolve the ($class, $r) stuff
> properly and it doesn't work anyway.Well, this does make sense, since if you do PerlHandler This::Handler->foo, mp_preload_module will try to require This::Handler->foo and of course, that won't load This::Handler, thus the run-time problem. > so, I suspect that most people figure it out when the module doesn't work as > expected, preload the module, and don't see a problem. Well, preloading will sure fix the breakage, but you will still get one strange _extra_ call to that method with no $r on startup. > does that seem to gel with what you've found? Sure does! I figured if I looked back in the mlist archives I might find something like this. Thanks for the insight then Geoff ! It also means that mp_preload_module is indeed broken and will be fixed shortly ;-) Unless anybody beats me to it, that is. > --Geoff -- -- ----------------------------------------------------------------------------- Philippe M. Chiasson /gozer\@(cpan|ectoplasm)\.org/ 88C3A5A5 (122FF51B/C634E37B) http://gozer.ectoplasm.org/ F9BF E0C2 480E 7680 1AE5 3631 CB32 A107 88C3 A5A5 Q: It is impossible to make anything foolproof because fools are so ingenious. perl -e'$$=\${gozer};{$_=unpack(P7,pack(L,$$));/^JAm_pH\n$/&&print||$$++&&redo}'
signature.asc
Description: This is a digitally signed message part
