From 7661a5732ebf4470339c1293b2ea32082af887be Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Tue, 12 Mar 2019 01:18:30 +0000 Subject: cgit: use a dedicated named limiter I mainly need this to enforce RLIMIT_CPU (and RLIMIT_CORE) when requests come which generate giant, unrealistic diffs. Per-coderepo limiters may be added in the future. But for now, I need to prevent cgit from monopolizing resources on my dinky server. --- lib/PublicInbox/Cgit.pm | 3 ++- lib/PublicInbox/Config.pm | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/PublicInbox/Cgit.pm b/lib/PublicInbox/Cgit.pm index 3d1a0d54..9ba9e14d 100644 --- a/lib/PublicInbox/Cgit.pm +++ b/lib/PublicInbox/Cgit.pm @@ -77,7 +77,8 @@ sub call { my $rdr = input_prepare($env) or return r(500); my $qsp = PublicInbox::Qspawn->new($self->{cmd}, $cgi_env, $rdr); - $qsp->psgi_return($env, undef, sub { + my $limiter = $self->{pi_config}->limiter('-cgit'); + $qsp->psgi_return($env, $limiter, sub { my ($r, $bref) = @_; my $res = parse_cgi_headers($r, $bref) or return; # incomplete $res; diff --git a/lib/PublicInbox/Config.pm b/lib/PublicInbox/Config.pm index 6f62712f..9c1c3e2c 100644 --- a/lib/PublicInbox/Config.pm +++ b/lib/PublicInbox/Config.pm @@ -132,7 +132,7 @@ sub limiter { my ($self, $name) = @_; $self->{-limiters}->{$name} ||= do { require PublicInbox::Qspawn; - my $max = $self->{"publicinboxlimiter.$name.max"}; + my $max = $self->{"publicinboxlimiter.$name.max"} || 1; my $limiter = PublicInbox::Qspawn::Limiter->new($max); $limiter->setup_rlimit($name, $self); $limiter; -- cgit v1.2.3-24-ge0c7