]> git.ipfire.org Git - thirdparty/public-inbox.git/commitdiff
git_http_backend: fix 32 default connection limit
authorEric Wong <e@80x24.org>
Sat, 8 Feb 2025 03:26:34 +0000 (03:26 +0000)
committerEric Wong <e@80x24.org>
Tue, 11 Feb 2025 00:11:40 +0000 (00:11 +0000)
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)
lib/PublicInbox/Config.pm
lib/PublicInbox/GitHTTPBackend.pm

index 03db2a51a25cd0bf88e6dcb347fe9fbd759b934b..2bb1a67220c1d2b8f89feee8bceea1b0e9bf9a89 100644 (file)
@@ -123,13 +123,13 @@ sub lookup_newsgroup {
 }
 
 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;
        };
 }
 
index 172de2bca2843e2ad65d0c10dfa2216457ddaa3a..57d2ec7ba58c0d38201f76e2a5f5b98fdebf850f 100644 (file)
@@ -98,8 +98,9 @@ sub serve_smart ($$$;$) {
                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);