summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xmod_perl.pl18
1 files changed, 13 insertions, 5 deletions
diff --git a/mod_perl.pl b/mod_perl.pl
index dac8622c8..a21d5d725 100755
--- a/mod_perl.pl
+++ b/mod_perl.pl
@@ -29,7 +29,6 @@ use strict;
# file.
use Apache2::ServerUtil;
-use Apache2::SizeLimit;
use ModPerl::RegistryLoader ();
use CGI ();
CGI->compile(qw(:cgi -no_xhtml -oldstyle_urls :private_tempfiles
@@ -47,15 +46,24 @@ use Bugzilla::Mailer ();
use Bugzilla::Template ();
use Bugzilla::Util ();
-# This means that every httpd child will die after processing
-# a CGI if it is taking up more than 70MB of RAM all by itself.
-$Apache2::SizeLimit::MAX_UNSHARED_SIZE = 70000;
+my ($sizelimit, $maxrequests) = ('', '');
+if (Bugzilla::Constants::ON_WINDOWS) {
+ $maxrequests = "MaxRequestsPerChild 25";
+}
+else {
+ require Apache2::SizeLimit;
+ # This means that every httpd child will die after processing
+ # a CGI if it is taking up more than 70MB of RAM all by itself.
+ $Apache2::SizeLimit::MAX_UNSHARED_SIZE = 70000;
+ $sizelimit = "PerlCleanupHandler Apache2::SizeLimit";
+}
my $cgi_path = Bugzilla::Constants::bz_locations()->{'cgi_path'};
# Set up the configuration for the web server
my $server = Apache2::ServerUtil->server;
my $conf = <<EOT;
+$maxrequests
# Make sure each httpd child receives a different random seed (bug 476622)
PerlChildInitHandler "sub { srand(); }"
<Directory "$cgi_path">
@@ -63,7 +71,7 @@ PerlChildInitHandler "sub { srand(); }"
# No need to PerlModule these because they're already defined in mod_perl.pl
PerlResponseHandler Bugzilla::ModPerl::ResponseHandler
PerlCleanupHandler Bugzilla::ModPerl::CleanupHandler
- PerlCleanupHandler Apache2::SizeLimit
+ $sizelimit
PerlOptions +ParseHeaders
Options +ExecCGI
AllowOverride Limit