[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: apache2::reload causing 500 errors on return statement



On Oct 18, 2006, at 3:17 PM, Michael Greenish wrote:
For now, I have reverted to not using Apache2::Reload, which is kind of a shame since I am still in the development stages of my application.

Just have your handler call another sub, and do everything in there. Apache2::Reload will definately pick up the changes

I'm attaching my working handlers below.

preview_check runs in an early apache hook- can't remember which one.

it sets up the environment, creates a PageUser ( aka $ctx ) and tests the ctx object to see if it has the preview cookie set- redirected if necessary.

handler runs during the expected mp output stage. it pulls environment stuff from pnotes, dispatches the page to be processed, and then prints output.

Everything I do in the main handler happens in the Page namespace.

On my tests just now, changes to package FindMeOn are never caught by Apache2::Reload.

However, any changes to FindMeOn::Page (which checks for permissions / dispatches / etc ) are always caught.

=====================================================================

package FindMeOn;

sub preview_check {
	my 	( $r )= shift;
	Apache2::RequestUtil->request($r);
my $apr= Apache2::Request->new( $r , DISABLE_UPLOADS=>1 , POST_MAX=>10_000 );
	$r->pnotes( 'apr'=> $apr );
	my 	$PageUser= FindMeOn::PageUser->new( $r , $apr );
	$r->pnotes( 'PageUser'=> $PageUser );
	# don't run this test on redirects
	if 	( $apr->location eq '/preview' ) {
		return Apache2::Const::OK;
	}
	if 	( !$PageUser->preview__can() )
	{
		$r->headers_out->set( Location=> '/preview/' );
		$r->status(Apache2::Const::REDIRECT);
		return Apache2::Const::REDIRECT;
	}
	return Apache2::Const::OK;
}
sub handler {
	my 	( $r )= shift;
	my 	$PageUser= $r->pnotes('PageUser');
	my 	$apr= $r->pnotes('apr');
	my  $Page= FindMeOn::Page->new( $PageUser );
	$r->content_type('text/html');
	eval {
		$r->print(  ${$Page->request__process()} );
		$PageUser->finish() ;
	};
	if ( $@ ) {
		$r->print( $@ );
		return Apache2::Const::DONE;
	}
	return Apache2::Const::OK;
}



Mail converted by mhonarc 2.6.15
This archive provided courtesy of JSW4.NET, Internet Hosting Services for Small Business.