Stas Bekman wrote:
Mark wrote:
-------------8<---------- Start Bug Report ------------8<---------- 1. Problem Description:
$ENV{REDIRECT_ERROR_NOTES} not working with MP2
Using latest everything (modperl 2 RC5).
To illustrate, I simply configure Apache with an errordocument:
ErrorDocument 500 /cgi/printenv
I have a perl-scripts configured like this:
<Directory "/usr/local/apache2/perl"> Options ExecCGI SetHandler perl-script PerlResponseHandler ModPerl::Registry PerlOptions +ParseHeaders </Directory>
And a script the generates an error:
#/usr/bin/perl barf();
The errordocument 'printenv' output shows REDIRECT_ERROR_NOTES empty.
When the identical barf script is run under CGI (script-alias), REDIRECT_ERROR_NOTES
has an error message.
I fooled around with more complex examples, accessing ARP table 'error-notes' and
that is also empty.
because you are in the sub request. the value is set in $r->main 'error-notes' table. I wonder why the sub-request doesn't see it.
Also I wonder if we should adjust in ModPerl::RegistryCooker:
sub log_error { my($self, $msg) = @_; my $class = ref $self;
- $self->{REQ}->log_error($msg); - $self->{REQ}->notes->set('error-notes' => $msg); + $self->{REQ}->log_rerror($msg); [EMAIL PROTECTED]>{URI}} = $msg; }
which is supposed to do that same in one call. Any difference with the above change?
OK, I installed RC6 (no change with that) and poked around a little more.
$r->prev->notes->get('error-notes') is definitely empty in the errordocument
handler, despite being set in ModPerl::RegistryCooker as shown above.
However, as a test, I changed 'error-notes' to 'error-notice' in RegistryCooker::log_error, and voila $r->prev->notes->get('error-notice') does contain the proper error message.
This suggests 'error-notes' is being wiped out (re-initialized?) somewhere after RegistryCooker. Someone with more knowledge than I can probably guess where this might be happening?
Could it possibly come from here?
src/modules/perl/modperl_callback.c
if (status == HTTP_INTERNAL_SERVER_ERROR) { if (r && r->notes) { apr_table_set(r->notes, "error-notes", SvPV_nolen(ERRSV)); } }
And we should check whether error-notes is already set and append the error instead?
-- __________________________________________________________________ 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