blob: 64f487ca6e6ee2c887c7c25554613cfabf2b1f2f [file] [log] [blame]
#!/usr/local/bin/perl -Tw
use Apache ();
use strict;
use vars qw($Scalar @Array %Hash); #for testing perl-status
use vars qw($filename);
use Config;
use Apache::testold qw($USE_THREAD);
not $filename or die "Apache::Registry scoping is broken!\n";
#make sure this untrip works
if($USE_THREAD) {
warn "must fix \$/ for threaded Perl\n";
}
else {
$/ eq "\n" or die "\$/ was not reset!\n";
$/ = "";
}
@Array == 0 or die "END block was not run for $0\n";
keys %Hash == 0 or die "__ANON__ registered cleanup failed!\n";
if(defined $Scalar) {
$Scalar == 0 or die "register_cleanup is broken!\n";
}
@Array = qw(one two three);
%Hash = qw(one 1 two 2 three 3);
$Scalar = 1;
my $r = Apache->request;
local $ENV{PATH} = "/bin";
use vars qw($is_xs);
$is_xs = ($r->uri =~ /_xs/);
sub reset_scalar {
$Scalar = 0;
#print STDERR "registered cleanup, resetting \$Scalar\n";
return 0;
}
$r->post_connection(sub {
my $r = shift;
unless(Apache::testold::WIN32()) { #XXX
my $loc = $r->uri;
$loc =~ /test/i or die "post_connection can't see \$r->uri! ($loc)\n";
}
#$r->warn("post connection handler called for ", $r->uri);
return 0;
});
$r->post_connection(\&reset_scalar);
$r->post_connection(sub {
#print STDERR "__ANON__ called\n";
%Hash = ();
return 0;
});
#$r->warn("sequence number: " . $r->seqno);
if($Apache::TestSIG) {
require Apache::SIG;
Apache::SIG->set;
}
#$r->content_type("text/plain");
$r->header_out("X-Perl-Script" => "test");
$r->send_http_header("text/plain");
my(@args);
$r->print("KeyForPerlSetVar = ", $r->dir_config('KeyForPerlSetVar'), "\n");
if($Apache::TestSIG) {
sleep(30);
#now hit the browser "stop" button now, error_log should say:
#Client hit STOP or Netscrape bit it!
#Process $$ going to Apache::exit with status=$s
}
my $scalar_args = $r->args;
print "SCALAR_ARGS=$scalar_args\n" if defined $scalar_args;
if (@args = $r->args) {
$r->print(
"ARGS: ",
join(", ", map { $_ = qq{"$_"} } @args),
"\n\n");
} else {
$r->print("No command line arguments passed to script\n\n");
}
my($key,$val);
while (($key,$val) = each %ENV) {
$r->print("$key=$val\n");
}
$r->print("TOTAL: ", scalar keys %ENV);
unless ($Apache::__T) {
die "\$Apache::__T not set!";
}
if ($ENV{CONTENT_LENGTH}) {
#$len = $ENV{CONTENT_LENGTH};
my $content = $r->content;
my $r_content_will_not_block_when_called_twice = $r->content;
eval { system $content };
die "TaintCheck failed, I can `system \$content' ($content:$ENV{CONTENT_LENGTH})" unless $@;
#warn "TRAPPED: `system \$r->content' '$@'\n";
$r->print("\nContent\n-------\n$content");
if(my $post = $r->subprocess_env("POST_DATA")) {
print "\nPOST_DATA=`$post'\n";
}
}
print "\n";
if(defined &Apache::system and \&system == \&Apache::system) {
system qq{$Config::Config{perlpath} -le 'print "Apache::system ok"'};
}
#even though we exit() here, END block below is still called
test_exit(); # unless $ENV{CONTENT_LENGTH};
sub test_exit {
if ($USE_THREAD or $is_xs) {
warn "XXX: need to fix exit in t/net/header.t w/ threads\n";
}
else {
exit;
die "shouldn't get this far!\n";
}
}
END {
#warn "END block called for `test' ($0)\n";
@Array = ();
}