Re: [MP2] : REDIRECT_ERROR_NOTES not set on errordocument redirect
[prev]
[thread]
[next]
[Date index for 2005/05/10]
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.
Sorry, I wasn't clear about that. In my tests using APR table,
I did look at the previous request, which is where I expected to
find the error-notes. Here's my handler:
sub handler {
my $r = shift;
my $pr = $r->prev;
$r->content_type('text/plain');
# dump out the previous request's notes table
my $table = $pr->notes;
foreach my $key (keys %{$table}) {
printf "$key = '%s'\n", $table->{$key};
}
...
> 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?
With this in place (which I admit I don't understand) error-notes is
now populated, but maybe the wrong stack frame or something, since
the error text is not the actual error from the original request.
I will study this further, maybe this is somehow my problem?
> what Apache is that?
Server version: Apache/2.0.53
Thanks,
Mark