The following rfc was triggered by http://nagoya.apache.org/bugzilla/show_bug.cgi?id=24501
I added a test for mod_cgi and it works just fine, despite the report, but mod_perl indeed doesn't work with nph- scripts.


In mp1 it was easy to set a location for non-parsed headers by turning the headers parsing option off. This doesn't work in httpd-2.0 -- if headers aren't parsed and httpd-2.0 can make a sense of what the output should be like it will just send its own httpd headers.

Moreover if you look at mod_cgi.c:818, if the script's name starts with 'nph-' it'll cheat at internally remove all the protocol filters which mess with headers letting the script do its own thing.

The only way mod_perl users can send unparsed headers is by calling:

$r->assbackwards(1);

in their code (as kindly mentioned by Geoff a few months ago).

The problem is that this doesn't work for registry scripts striving to be compatible with mod_cgi, i.e. run unmodified.

Therefore I thought of two posible solutions:

1) Introduce a new option:

PerlOptions +NonParseHeaders

which will do just that, call: $r->assbackwards(1) at the beginning of the response phase.

2) An alternative solution is to mess with RegistryCooker to match /npn-/ and call $r->assbackwards(1) on behalf of the script.

The first solution closely matches mp1, by giving users control over the naming of the scripts and even handlers.

The second solution matches 1:1 mod_cgi, which hardcodes 'nph-' condition.

Which solution do you think is the best?

Also I'm not hardwired on 'PerlOptions +NonParseHeaders' so other names are welcome if you prefer the first option.

__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com


--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to