summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Kanat-Alexander <mkanat@bugzilla.org>2010-12-27 23:19:08 +0100
committerMax Kanat-Alexander <mkanat@bugzilla.org>2010-12-27 23:19:08 +0100
commit606e568c35a5752560ee31e1be7f4b64fefe31cd (patch)
treed381aeae510091f39a6459ed2cb47059484de342
parent9cfe048d1298e7be8db9b5c2a88abaae114b23a3 (diff)
downloadbugzilla-606e568c35a5752560ee31e1be7f4b64fefe31cd.tar.gz
bugzilla-606e568c35a5752560ee31e1be7f4b64fefe31cd.tar.xz
Bug 599539: Update the mod_perl code for Apache2::SizeLimit 0.92
r=glob, a=mkanat
-rw-r--r--Bugzilla/Install/Requirements.pm18
-rw-r--r--mod_perl.pl19
-rw-r--r--template/en/default/pages/release-notes.html.tmpl4
3 files changed, 25 insertions, 16 deletions
diff --git a/Bugzilla/Install/Requirements.pm b/Bugzilla/Install/Requirements.pm
index ea2b313fd..f629abeeb 100644
--- a/Bugzilla/Install/Requirements.pm
+++ b/Bugzilla/Install/Requirements.pm
@@ -319,8 +319,26 @@ sub OPTIONAL_MODULES {
version => '1.999022',
feature => ['mod_perl'],
},
+ {
+ package => 'Apache-SizeLimit',
+ module => 'Apache2::SizeLimit',
+ # 0.93 fixes problems on Linux and Windows, and changes the
+ # syntax used by SizeLimit.
+ version => '0.93',
+ feature => ['mod_perl'],
+ },
);
+ if (ON_WINDOWS) {
+ # SizeLimit needs Win32::API to work on Windows.
+ push(@modules, {
+ package => 'Win32-API',
+ module => 'Win32::API',
+ version => 0,
+ feature => ['mod_perl'],
+ });
+ }
+
my $extra_modules = _get_extension_requirements('OPTIONAL_MODULES');
push(@modules, @$extra_modules);
return \@modules;
diff --git a/mod_perl.pl b/mod_perl.pl
index 15dec263a..abd018103 100644
--- a/mod_perl.pl
+++ b/mod_perl.pl
@@ -44,32 +44,23 @@ use Bugzilla::Util ();
# Pre-compile the CGI.pm methods that we're going to use.
Bugzilla::CGI->compile(qw(:cgi :push));
-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";
-}
+use 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->set_max_unshared_size(70_000);
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">
AddHandler perl-script .cgi
# No need to PerlModule these because they're already defined in mod_perl.pl
PerlResponseHandler Bugzilla::ModPerl::ResponseHandler
- PerlCleanupHandler Bugzilla::ModPerl::CleanupHandler
- $sizelimit
+ PerlCleanupHandler Apache2::SizeLimit Bugzilla::ModPerl::CleanupHandler
PerlOptions +ParseHeaders
Options +ExecCGI
AllowOverride Limit FileInfo Indexes
diff --git a/template/en/default/pages/release-notes.html.tmpl b/template/en/default/pages/release-notes.html.tmpl
index 2b702a05e..445cd7966 100644
--- a/template/en/default/pages/release-notes.html.tmpl
+++ b/template/en/default/pages/release-notes.html.tmpl
@@ -98,8 +98,8 @@
<h3 id="v40_req_modules">Required Perl Modules</h3>
[% INCLUDE req_table reqs = REQUIRED_MODULES
- new = ['List-MoreUtils']
- updated = ['Email-MIME', 'CGI.pm'] %]
+ new = ['List-MoreUtils', 'Win32-API']
+ updated = ['Email-MIME', 'CGI.pm', 'Apache-SizeLimit'] %]
<h3 id="v40_req_optional_mod">Optional Perl Modules</h3>