Re: [MP2] : REDIRECT_ERROR_NOTES not set on errordocument redirect

[prev] [thread] [next] [Date index for 2005/05/11]

From: Mark
Subject: Re: [MP2] : REDIRECT_ERROR_NOTES not set on errordocument redirect
Date: 06:01 on 11 May 2005
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);
>      $@{$self->{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?

Mark




Re: [MP2] : REDIRECT_ERROR_NOTES not set on errordocument redirect
Mark 06:01 on 11 May 2005

Generated at 15:53 on 25 May 2005 by mariachi v0.52