use Plack::Util;
use PublicInbox::Qspawn;
+# 32 is same as the git-daemon connection limit
+my $default_limiter = PublicInbox::Qspawn::Limiter->new(32);
+
# n.b. serving "description" and "cloneurl" should be innocuous enough to
# not cause problems. serving "config" might...
my @text = qw[HEAD info/refs
my $val = $env->{$name};
$env{$name} = $val if defined $val;
}
- my $git_dir = ref $git ? $git->{git_dir} : $git;
+ my ($git_dir, $limiter);
+ if (ref $git) {
+ $limiter = $git->{-httpbackend_limiter} || $default_limiter;
+ $git_dir = $git->{git_dir};
+ } else {
+ $limiter = $default_limiter;
+ $git_dir = $git;
+ }
$env{GIT_HTTP_EXPORT_ALL} = '1';
$env{PATH_TRANSLATED} = "$git_dir/$path";
my %rdr = ( 0 => fileno($in) );
# holding the input here is a waste of FDs and memory
$env->{'psgi.input'} = undef;
- $x->start(sub { # may run later, much later...
+ $x->start($limiter, sub { # may run later, much later...
($rpipe) = @_;
$in = undef;
if ($async) {