Commit 606e568c authored by Max Kanat-Alexander's avatar Max Kanat-Alexander

Bug 599539: Update the mod_perl code for Apache2::SizeLimit 0.92

r=glob, a=mkanat
parent 9cfe048d
...@@ -319,8 +319,26 @@ sub OPTIONAL_MODULES { ...@@ -319,8 +319,26 @@ sub OPTIONAL_MODULES {
version => '1.999022', version => '1.999022',
feature => ['mod_perl'], 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'); my $extra_modules = _get_extension_requirements('OPTIONAL_MODULES');
push(@modules, @$extra_modules); push(@modules, @$extra_modules);
return \@modules; return \@modules;
......
...@@ -44,32 +44,23 @@ use Bugzilla::Util (); ...@@ -44,32 +44,23 @@ use Bugzilla::Util ();
# Pre-compile the CGI.pm methods that we're going to use. # Pre-compile the CGI.pm methods that we're going to use.
Bugzilla::CGI->compile(qw(:cgi :push)); Bugzilla::CGI->compile(qw(:cgi :push));
my ($sizelimit, $maxrequests) = ('', ''); use Apache2::SizeLimit;
if (Bugzilla::Constants::ON_WINDOWS) { # This means that every httpd child will die after processing
$maxrequests = "MaxRequestsPerChild 25"; # a CGI if it is taking up more than 70MB of RAM all by itself.
} Apache2::SizeLimit->set_max_unshared_size(70_000);
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'}; my $cgi_path = Bugzilla::Constants::bz_locations()->{'cgi_path'};
# Set up the configuration for the web server # Set up the configuration for the web server
my $server = Apache2::ServerUtil->server; my $server = Apache2::ServerUtil->server;
my $conf = <<EOT; my $conf = <<EOT;
$maxrequests
# Make sure each httpd child receives a different random seed (bug 476622) # Make sure each httpd child receives a different random seed (bug 476622)
PerlChildInitHandler "sub { srand(); }" PerlChildInitHandler "sub { srand(); }"
<Directory "$cgi_path"> <Directory "$cgi_path">
AddHandler perl-script .cgi AddHandler perl-script .cgi
# No need to PerlModule these because they're already defined in mod_perl.pl # No need to PerlModule these because they're already defined in mod_perl.pl
PerlResponseHandler Bugzilla::ModPerl::ResponseHandler PerlResponseHandler Bugzilla::ModPerl::ResponseHandler
PerlCleanupHandler Bugzilla::ModPerl::CleanupHandler PerlCleanupHandler Apache2::SizeLimit Bugzilla::ModPerl::CleanupHandler
$sizelimit
PerlOptions +ParseHeaders PerlOptions +ParseHeaders
Options +ExecCGI Options +ExecCGI
AllowOverride Limit FileInfo Indexes AllowOverride Limit FileInfo Indexes
......
...@@ -98,8 +98,8 @@ ...@@ -98,8 +98,8 @@
<h3 id="v40_req_modules">Required Perl Modules</h3> <h3 id="v40_req_modules">Required Perl Modules</h3>
[% INCLUDE req_table reqs = REQUIRED_MODULES [% INCLUDE req_table reqs = REQUIRED_MODULES
new = ['List-MoreUtils'] new = ['List-MoreUtils', 'Win32-API']
updated = ['Email-MIME', 'CGI.pm'] %] updated = ['Email-MIME', 'CGI.pm', 'Apache-SizeLimit'] %]
<h3 id="v40_req_optional_mod">Optional Perl Modules</h3> <h3 id="v40_req_optional_mod">Optional Perl Modules</h3>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment