Apache2-ClickPath
view release on metacpan or search on metacpan
lib/Apache2/ClickPath/Store.pm view on Meta::CPAN
# is waited to let pending requests be served. Then at stage 2 the
# directory is removed.
if( $time-(stat $d.'/'.$el)[9]>$tmout ) {
if( $el=~/^#/ ) {
# stage 2
$c->base_server->log->info('['.__PACKAGE__."] $d/$el has expired: deleting");
rmtree $d.'/'.$el;
} else {
# stage 1
$c->base_server->log->info('['.__PACKAGE__."] $d/$el has expired: marking for deletion");
rename "$d/$el", "$d/#$el"
or do {
$c->log->error('['.__PACKAGE__."] Cannot rename $d/$el to $d/#$el: $! -- deleting $el");
rmtree $d.'/'.$el;
};
}
}
}
}
}
sub handler {
my $r=shift;
t/session/011store.t view on Meta::CPAN
Apache::TestRequest::user_agent( reset=>1, keep_alive=>300 );
$res=GET( "/store?a=get;s=$session;k=klaus" );
sleep 3;
$res=GET( "/store?a=get;s=$session;k=klaus" );
ok t_cmp( $res->code, 200, 'no timeout yet' );
sleep 3;
Apache::TestRequest::user_agent( reset=>1, keep_alive=>0 );
sleep 1;
ok t_cmp( -d "t/store/#$session", 1, 'session marked for deletion (renamed)' );
$res=GET( "/store?a=get;s=$session;k=klaus" );
ok t_cmp( $res->code, 404, 'data not accessible' );
sleep 3;
$res=GET( "/store?a=get;s=$session;k=klaus" ); # let cleanup() run once again
sleep 1; # and give it time to accomplish the task
$res=GET( "/store?a=get;s=$session;k=klaus" );
$res=GET( "/store?a=get;s=$session;k=klaus" );
ok t_cmp( $res->code, 404, 'session store deleted => NOT_FOUND' );
t/session/011store.t view on Meta::CPAN
Apache::TestRequest::user_agent( reset=>1, keep_alive=>300 );
$res=GET( "/store?a=get;s=$session;k=klaus" );
sleep 3;
$res=GET( "/store?a=get;s=$session;k=klaus" );
ok t_cmp( $res->code, 200, 'no timeout yet (Secret)' );
sleep 3;
Apache::TestRequest::user_agent( reset=>1, keep_alive=>0 );
sleep 1;
ok t_cmp( -d "t/store/#$session", 1,
'session marked for deletion (renamed) (Secret)' );
$res=GET( "/store?a=get;s=$session;k=klaus" );
ok t_cmp( $res->code, 404, 'data not accessible (Secret)' );
sleep 2;
$res=GET( "/store?a=get;s=$session;k=klaus" ); # let cleanup() run once again
sleep 1; # and give it time to accomplish the task
$res=GET( "/store?a=get;s=$session;k=klaus" );
ok t_cmp( $res->code, 404, 'session store deleted => NOT_FOUND (Secret)' );
ok t_cmp( -d "t/store/#$session", undef,
( run in 0.314 second using v1.01-cache-2.11-cpan-b888b73be4d )