Using any configurable limiter actually defaults to `1', which
isn't intended for `-httpbackend'. So add a $max_default
parameter to ensure we can set a per-limiter default value for
default limiters such as `-httpbackend'.
Fixes: 0a083241 (git_http_backend: use default limiter from Qspawn, 2025-01-28)
}
sub limiter {
- my ($self, $name) = @_;
+ my ($self, $name, $max_default) = @_;
$self->{-limiters}->{$name} //= do {
require PublicInbox::Limiter;
- my $max = $self->{"publicinboxlimiter.$name.max"} || 1;
- my $limiter = PublicInbox::Limiter->new($max);
- $limiter->setup_rlimit($name, $self);
- $limiter;
+ my $max = $self->{"publicinboxlimiter.$name.max"};
+ my $l = PublicInbox::Limiter->new($max || $max_default || 1);
+ $l->setup_rlimit($name, $self);
+ $l;
};
}
my $val = $env->{$name};
$env{$name} = $val if defined $val;
}
+ # 32 is the default connection limit for git-daemon, so match that
my $limiter = $git->{-httpbackend_limiter} //
- ($pi_cfg ? $pi_cfg->limiter('-httpbackend') : undef);
+ ($pi_cfg ? $pi_cfg->limiter('-httpbackend', 32) : undef);
$env{GIT_HTTP_EXPORT_ALL} = '1';
$env{PATH_TRANSLATED} = "$git->{git_dir}/$path";
my $rdr = input_prepare($env) or return r(500);