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 | |
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')
-rw-r--r-- | lib/PublicInbox/Config.pm | 16 | ||||
-rw-r--r-- | lib/PublicInbox/LeiCurl.pm | 2 |
2 files changed, 12 insertions, 6 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; } diff --git a/lib/PublicInbox/LeiCurl.pm b/lib/PublicInbox/LeiCurl.pm index f5e95956..48c66ee9 100644 --- a/lib/PublicInbox/LeiCurl.pm +++ b/lib/PublicInbox/LeiCurl.pm @@ -76,7 +76,7 @@ sub for_uri { my $pfx = torsocks($self, $lei, $uri) or return; # error if ($uri->scheme =~ /\Ahttps?\z/i) { my $cfg = $lei->_lei_cfg; - my $p = $cfg ? $cfg->urlmatch('http.Proxy', $$uri) : undef; + my $p = $cfg ? $cfg->urlmatch('http.Proxy', $$uri, 1) : undef; push(@opt, '--proxy', $p) if defined($p); } bless [ @$pfx, @$self, @opt, $uri->as_string ], ref($self); |