try this:

--- Yours.pm    Thu Sep 14 08:04:00 2000
+++ Mine.pm     Thu Sep 14 08:02:49 2000
@@ -57,8 +57,8 @@
        {
        my $r = shift;
 
-       my $notes  = $r->notes;
-       my $pnotes = $r->pnotes;
+       my $notes  = $r->prev->notes || $r->notes;
+       my $pnotes = $r->prev->pnotes || $r->pnotes;
 
        $r->status( SERVER_ERROR );
        $r->send_http_header;

HTH

--Geoff

> -----Original Message-----
> From: brian d foy [mailto:[EMAIL PROTECTED]]
> Sent: Wednesday, September 13, 2000 6:19 PM
> To: [EMAIL PROTECTED]
> Subject: does notes() work with custom_response()?
> 
> 
> 
> =head
> should notes() be available to a handler installed with
> custom_response()? 
> 
> notice the code below:
>       
>       0) handler() decides which function will handle the response
>       and sets a note.
>       
>       1) in test(), if part of the uri contains /error/, then
>       another note is set and a custom_response() is used.
>       the error() routine handles the error().  it sees the
>       note set by handler() but not by test(),
>       
>       2) in test(), if part of the uri contains /push/, then
>       a note is set and error() is installed as a handler.
>       error() then sees both notes.
> 
> should 1) propogate both notes? are things even designed to 
> work that way?
> =cut
> 
> package LinkBank5::ErrorTest;
> 
> use Apache::Constants;
> 
> sub handler
>       {
>       my $r = shift;
>       my $uri = $r->uri;
>       $r->notes( 'LB-handler' => "Run at @{[scalar localtime]}" );
> 
>       if( $uri =~ /test/ )
>               {
>               $r->push_handlers( PerlHandler => \&test ); 
>               return OK;
>               }
>       if( $uri =~ /error/ )
>               {
>               $r->push_handlers( PerlHandler => \&error ); 
>               return OK;
>               }
>       else { return DECLINED; }
>       }
>       
> sub test
>       {
>       my $r = shift;
>       my $uri = $r->uri;
>       
>       #this note is not set, although the handler note is propogated
>       if( $uri =~ /error/ ) # e.g. /test/error
>               {
>               $r->notes('LB-Error' => 'Oops! i messed up');
>               $r->notes('error-notes' => 'Oops! i messed up');
>               $r->custom_response( SERVER_ERROR, "/error" );
>               
>               return SERVER_ERROR; #tested with OK and DECLINED too
>               }
>       #using a PushHandler works
>       elsif( $uri =~ /push/ ) # e.g. /test/push
>               {
>               $r->notes('LB-Push' => 'Oops! i messed up');
>               $r->push_handlers( PerlHandler => \&error );
> 
>               return OK;
>               }
>               
>       $r->send_http_header;
>       
>       my $note = $r->notes('LB-handler');
>       $r->print("I'm in test!\n");
>       $r->print("The note is [$note]\n");
>       
>       return OK;
>       }
>               
> sub error
>       {
>       my $r = shift;
>       
>       my $notes  = $r->notes;
>       my $pnotes = $r->pnotes;
>       
>       $r->status( SERVER_ERROR );
>       $r->send_http_header;
>       
>       $r->print("I'm in error!\n");
>       
>       print "Notes are -----\n";
>       print map { "$_ => $$notes{$_}\n" } sort keys %$notes;
> 
>       print "PNotes are -----\n";
>       print map { "$_ => $$pnotes{$_}\n" } sort keys %$pnotes;
>       
>       return OK;
>       }
>       
> 1;
> 
> __END__
> 
> --
> brian d foy                              <[EMAIL PROTECTED]>
> Director of Technology, Smith Renaud, Inc.
> 875 Avenue of the Americas, 2510, New York, NY  10001
>       V: (212) 239-8985
> 

Reply via email to