Re: Custom directive and <Location> - bug?
"Alex J. G. Burzyński" <[email protected]>
| Newsgroups | gmane.comp.apache.mod-perl |
|---|---|
| Message-ID | <[email protected]> |
On 06/12/10 20:39, Philippe M. Chiasson wrote: > On 10-11-30 07:51 , "Alex J. G. Burzyński" wrote: >> Hi, >> >> I've noticed that when using custom directives within nested<Location> >> the result of $r->location reports the parent one only, instead of the >> subdir. >> >> However if I add PerlSetVar the $r->location will report the correct one. > Yup, you've stumbled on an interesting bug. > I've found this while working on Apache2::Layer (on cpan) >> The way to replicate: >> please follow the example >> http://perl.apache.org/docs/2.0/user/config/custom.html#Merging_at_Work >> >> and now add: >> >> --- httpd.conf-orig 2010-11-30 12:06:57.491843181 +0000 >> +++ httpd.conf 2010-11-30 12:07:39.217629859 +0000 >> @@ -18,6 +18,7 @@ >> PerlResponseHandler MyApache2::CustomDirectivesTest >> </Location> >> <Location /custom_directives_test/subdir> >> + PerlSetVar fix "problem" >> MyPlus 1 >> MyList "SubDir" >> MyAppend "SubDir" > The reason this makes a difference is that without it, there are no > mod_perl directives (the custom ones are 'special'), so no configuration > pass for modperl in that directory. > > Side-effect of that is that $r->location isn't tracked proprely. > Keep in mind that r->location is not an httpd api, but rather something > convenient mod_perl tracks. But not in this case, unfortunately. > If you take a look at those (around lines 68-70): http://pastebin.com/PUtcczwA (with PerlSetVar) http://pastebin.com/kfjMtZsT (without PerlSetVar) you'll see that PerlSetVar creates directory context, while custom directive on its own does not. However the Apache2::CmdParams->path returns the correct value and that's what I'm using in my module as a workaround. Thanks, Alex