about summary refs log tree commit homepage
path: root/lib/PublicInbox/RepoSnapshot.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2022-10-08 08:24:45 +0000
committerEric Wong <e@80x24.org>2022-10-09 16:48:37 +0000
commit2bc26fececd03705c68c1968f95a2d199bafec29 (patch)
tree900a1080687adc7ec7877e6d9123a570f4b14804 /lib/PublicInbox/RepoSnapshot.pm
parent8bd0fadfe7fcc7c44a3478ffefede71f24319441 (diff)
downloadpublic-inbox-2bc26fececd03705c68c1968f95a2d199bafec29.tar.gz
This also ensures we won't waste CPU cycles on snapshots
which aren't configured if somebody attempts them by
guessing URLs.
Diffstat (limited to 'lib/PublicInbox/RepoSnapshot.pm')
-rw-r--r--lib/PublicInbox/RepoSnapshot.pm4
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/PublicInbox/RepoSnapshot.pm b/lib/PublicInbox/RepoSnapshot.pm
index 460340e6..826392a8 100644
--- a/lib/PublicInbox/RepoSnapshot.pm
+++ b/lib/PublicInbox/RepoSnapshot.pm
@@ -72,10 +72,12 @@ sub ver_check { # git->check_async callback
 sub srv {
         my ($ctx, $fn) = @_;
         return if $fn =~ /["\s]/s;
-        $fn =~ s/\.($SUFFIX)\z//o or return;
+        my $fmt = $ctx->{wcr}->{snapshots}; # TODO per-repo snapshots
+        $fn =~ s/\.($SUFFIX)\z//o and $fmt->{$1} or return;
         $ctx->{snap_fmt} = $1;
         my $pfx = $ctx->{git}->local_nick // return;
         $pfx =~ s/(?:\.git)?\z/-/;
+        ($pfx) = ($pfx =~ m!([^/]+)\z!);
         substr($fn, 0, length($pfx)) eq $pfx or return;
         $ctx->{snap_pfx} = $fn;
         my $v = $ctx->{snap_ver} = substr($fn, length($pfx), length($fn));