blob: cf2bc2c5a4a93d75b79e0d454b5a7128b97edcf3 [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 TestModules::include_subreq;
# this test calls a simple response handler, whose output includes a
# simple SSI directive, processed by the INCLUDES output filter, which
# triggers another response handler, which again returns an SSI
# directive, again processed by INCLUDES, which again calls a response
# handler
#
# main
# resp => INCLUDES => => client
# => 1st =>
# subreq => INCLUDES => =>
# response => =>
# => 2nd =>
# subreq =>
# response
#
#
#
# here we test whether :Apache perlio (STDOUT) is reentrant, since the test
# overrides STDOUT 3 times, recursively.
use strict;
use warnings FATAL => 'all';
use Apache::TestTrace;
use Apache2::Const -compile => 'OK';
sub handler {
my $r = shift;
$r->content_type('text/plain');
my $path_info = $r->path_info || '';
my $uri = $r->uri;
debug "uri: $uri, path_info: $path_info";
if ($path_info eq '/one') {
$uri =~ s/one/two/;
print qq[subreq <!--#include virtual="$uri" -->ok];
}
elsif ($path_info eq '/two') {
$uri = "/TestModules__include_subreq_dup/three";
#$uri =~ s/two/three/;
print qq[is <!--#include virtual="$uri" -->];
#print "is";
}
elsif ($path_info eq '/three') {
print "quite ";
}
else {
die "something is wrong, didn't get path_info";
}
Apache2::Const::OK;
}
1;
__END__
# notice that perl-script is used on purpose here - testing whether
# :Apache perlio is reentrant (SetHandler modperl doesn't go through
# :Apache perlio layer)
SetHandler perl-script
PerlSetOutputFilter INCLUDES
Options +IncludesNoExec
<Base>
# it's silly that we have to duplicate the resource, but mod_include
# otherwise thinks we have a recursive call loop
<Location /TestModules__include_subreq_dup>
PerlSetOutputFilter INCLUDES
Options +IncludesNoExec
SetHandler perl-script
PerlResponseHandler TestModules::include_subreq
</Location>
</Base>