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