On Apr 23, 2008, at 11:53, David E. Wheeler wrote:

I was fiddling with that yesterday, and $r->main seemed to return true every time. But I'll try again.

The /101/ request *is* a subrequest? WTF is that coming from? It seems to happen after the AccessHandler finishes, but before the ResponseHandler runs. Maybe AccessHandler somehow triggers it? I don't see anything in there that looks like it calls path_info(), but I'll keep looking

The creation of the subrequest is weird. There code in Bricolage that uses path_info() (it runs on Mason after all), but I can't see why the subrequest gets created *only* if there is a TransHandler, even if that TransHandler does nothing but return DECLINED.

To whit, I changed the TransHandler to just use Apache2::Const::DECLINED for its handler. Nothing else. The request looks like this:

77532 AccessHandler   start for (main) /workflow/profile/desk/101/101/
77532 AccessHandler   finish for (main) /workflow/profile/desk/101/101/
77532 CleanupHandler  start for (sub) /101/
77532 ResponseHandler start for (main) /workflow/profile/desk/101/101/
77532 ResponseHandler finish for (main) /workflow/profile/desk/101/101/
77532 CleanupHandler  start for (main) /workflow/profile/desk/101/101/
77532 CleanupHandler  finish for (main) /workflow/profile/desk/101/101/

If I remove the TransHandler altogether, it looks like this:

77709 AccessHandler start for (main) /workflow/profile/desk/101/101/
77709 AccessHandler finish for (main) /workflow/profile/desk/101/101/
77709 ResponseHandler start for (main) /workflow/profile/desk/101/101/
77709 ResponseHandler finish for (main) /workflow/profile/desk/101/101/
77709 CleanupHandler start for (main) /workflow/profile/desk/101/101/
77709 CleanupHandler finish for (main) /workflow/profile/desk/101/101/

No subrequest appears at all! So this leads me to conclude one of two things. Either

1. Internally, mod_perl's TransHandler code triggers the subrequest. Why it would, I have no idea, but if there is no TransHandler, that code doesn't execute and there is no subrequest. Or:

2. There is some code executing somewhere in Bricolage between the AccessHander and the ResponseHandler, but only if there is a TransHandler. If this is the case, I have no idea where that code would be. Remember, this is my httpd.conf:

NameVirtualHost *:80
<VirtualHost *:80>
 DocumentRoot           /usr/local/bricolage/comp
 ServerName             localhost
 DefaultType            "text/html; charset=utf-8"
 AddDefaultCharset      utf-8
 SetHandler             perl-script
 PerlResponseHandler    Bric::App::Handler
 PerlAccessHandler      Bric::App::AccessHandler
 PerlCleanupHandler     Bric::App::CleanupHandler
 PerlTransHandler       Apache2::Const::DECLINE
</VirtualHost>

So, with this information, I can at least work around the problem by declining to do anything in the AccessHandler or the CleanupHandler when $r->main returns something, but I'm still mystfied as to where this subrequest is coming from.

Thanks,

David

Reply via email to