From: Eric Wong Date: Wed, 23 Nov 2022 04:09:58 +0000 (+0000) Subject: lei_curl: use http.proxy config from git if available X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;ds=sidebyside;h=2bd8f48268ac24a4d3cac326a89099639ae1d170;p=public-inbox.git lei_curl: use http.proxy config from git if available 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. --- 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);