diff options
author | Eric Wong <e@80x24.org> | 2022-11-23 04:09:58 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2022-11-23 10:51:26 +0000 |
commit | 2bd8f48268ac24a4d3cac326a89099639ae1d170 (patch) | |
tree | 7825764eec9ddfb1af3ecb7f2c8af533c8b00083 /lib/PublicInbox/Config.pm | |
parent | 99acd1de608f99d90cca15737b71a68f21108d20 (diff) | |
download | public-inbox-2bd8f48268ac24a4d3cac326a89099639ae1d170.tar.gz |
Since HTTP(S) URLs hit by lei or public-inbox-{clone,fetch} are expected to be git endpoints anyways, fall back to using http.proxy from git configs to save the user from having to maintain the same configuration for different things.
Diffstat (limited to 'lib/PublicInbox/Config.pm')
-rw-r--r-- | lib/PublicInbox/Config.pm | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/lib/PublicInbox/Config.pm b/lib/PublicInbox/Config.pm index 6a51226e..5620bd0e 100644 --- a/lib/PublicInbox/Config.pm +++ b/lib/PublicInbox/Config.pm @@ -533,7 +533,7 @@ sub _fill_ei ($$) { } sub urlmatch { - my ($self, $key, $url) = @_; + my ($self, $key, $url, $try_git) = @_; state $urlmatch_broken; # requires git 1.8.5 return if $urlmatch_broken; my $file = $self->{'-f'} // default_file(); @@ -542,13 +542,19 @@ sub urlmatch { my $fh = popen_rd($cmd); local $/ = "\0"; my $val = <$fh>; - if (close($fh)) { - chomp($val); - } else { - $urlmatch_broken = 1 if (($? >> 8) != 1); + if (!close($fh)) { undef $val; + if (($? >> 8) != 1) { + $urlmatch_broken = 1; + } elsif ($try_git) { # n.b. this takes cwd into account + $cmd = [qw(git config -z --get-urlmatch), $key, $url]; + $fh = popen_rd($cmd); + $val = <$fh>; + close($fh) or undef($val); + } } $? = 0; # don't influence lei exit status + chomp $val if defined $val; $val; } |