i will be very happy if you can figure this out.  i currently have  
this hack in my autohandler %filter:

   if ( ($r->header_out('Location') or $r->err_header_out 
('Location')) and $r->status == 200 ) {
     $r->status(302);
   }

i can't remember if this problem showed up before or after  
introducing CDBI into the codebase, but i do recall spending a while  
trying unsuccessfully to track down what is going wrong in $m->abort().

On May 14, 2007, at 8:57 AM, Charlie Katz wrote:

> Hi all,
>
> I have a weird (and kind of interesting, I hope) problem with $m- 
> >redirect in
> my Class::DBI based mod_perl/Mason application.  (Apache 2.2.3,  
> mod_perl
> 2.0.2, perl 5.8.7, Mason 1.33, CDBI 3.0.16)
>
>
> The relevant parts of the component in question:
>
> <%args>
>   $event # an object from one of my CDBI subclasses; it was  
> instantiated
>          # in an autohandler and passed to this component in $m- 
> >call_next;
> </%args>
> <%init>
> if(deletion confirmed) {
>   my $dest = (some runtime determined url);
>   $event->delete;
>   $m->redirect($dest);
> }
> </%init>
>
> The failure is that while the server is  correctly setting Location  
> to $dest,
> it's sending 200 to the browser instead of 302.
>
>
> I investigated a bit and have a few clues:
>
> 1) if I remove the $event->delete line, the redirect works
>
> 2) the redirect works if I replace $m->redirect with
>      $m->clear_buffer;
>      $r->err_headers_out->set("Location", $dest);
>      $r->status(302);
>
> 3) I tried inlining the code from the CDBI delete method to see if
>    something in there was to blame; the delete method, after deleting
>    the data, invalidates the object like this:
>
>      undef %$event;
>      bless $event, 'Class::DBI::Object::Has::Been::Deleted';
>
>    When I comment out the call to bless, the redirect works
>
> 4) if I retrieve the object from the database within this component:
>       my $newobj = My::CDBI::Subclass->retrieve($event->id);
>       $newobj->delete;
>
>    the redirect works
>
>
> I guess what I conclude from this is that after calling delete on  
> the object
> passed via the <%args> block (resulting in the re-blessing of the  
> object's
> reference), $m gets corrupted such that the redirect fails.
>
> Anyone have any ideas where I should look next?
>
> Regards,
> Charlie Katz
>
> Harvard-Smithsonian Center for Astrophysics
> [EMAIL PROTECTED]
>
> ---------------------------------------------------------------------- 
> ---
> This SF.net email is sponsored by DB2 Express
> Download DB2 Express C - the FREE version of DB2 express and take
> control of your XML. No limits. Just data. Click to get it now.
> http://sourceforge.net/powerbar/db2/
> _______________________________________________
> Mason-users mailing list
> Mason-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/mason-users

---
michael reece :: software engineer :: [EMAIL PROTECTED]



-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Mason-users mailing list
Mason-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mason-users

Reply via email to