[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Porting Bricolage to mp2: TransHandler Interference


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


Mail converted by mhonarc 2.6.15
This archive provided courtesy of JSW4.NET, Internet Hosting Services for Small Business.