blob: 19089321c34ea0aaee0abb5dc28bc3e747414715 [file] [log] [blame]
# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestDirective::perlcleanuphandler;
use strict;
use warnings FATAL => 'all';
use Apache2::RequestRec ();
use Apache2::RequestIO ();
use Apache2::RequestUtil ();
use Apache2::Connection ();
use Apache2::ConnectionUtil ();
use Apache2::Const -compile => 'OK', 'DECLINED';
# This test is to show an error that occurs if in the whole request cycle
# only a PerlCleanupHandler is defined. In this case it is not called.
# To check that "/get?incr" is called first. This returns "UNDEF" to the
# browser and sets the counter to "1". Next "/get" is called again without
# args to check the counter without increment. Then we fetch
# "/index.html?incr". Here no other Perl*Handler save the PerlCleanupHandler
# is involved. So the next "/get" must return "2" but it shows "1".
sub cleanup {
my $r=shift;
$r->connection->pnotes->{counter}++ if( $r->args eq 'incr' );
return Apache2::Const::OK;
}
sub get {
my $r=shift;
$r->content_type('text/plain');
$r->print($r->connection->pnotes->{counter} || "UNDEF");
return Apache2::Const::OK;
}
1;
__END__
<VirtualHost TestDirective::perlcleanuphandler>
<IfDefine PERL_USEITHREADS>
# a new interpreter pool
PerlOptions +Parent
PerlInterpStart 1
PerlInterpMax 1
PerlInterpMinSpare 0
PerlInterpMaxSpare 1
# PerlInterpScope connection
</IfDefine>
KeepAlive On
KeepAliveTimeout 300
MaxKeepAliveRequests 100
# use test system's @INC
PerlSwitches -I@serverroot@
PerlRequire "conf/modperl_inc.pl"
PerlModule TestDirective::perlcleanuphandler
<Location /get>
SetHandler modperl
PerlResponseHandler TestDirective::perlcleanuphandler::get
</Location>
PerlCleanupHandler TestDirective::perlcleanuphandler::cleanup
</VirtualHost>