chiark
/
gitweb
/
~ianmdlvl
/
dgit.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
b0879c9
)
dgit: libcurl usage: Install SIGPIPE handler ourselv
author
Ian Jackson
<ijackson@chiark.greenend.org.uk>
Tue, 23 Jul 2019 17:22:26 +0000
(18:22 +0100)
committer
Ian Jackson
<ijackson@chiark.greenend.org.uk>
Tue, 23 Jul 2019 20:57:59 +0000
(21:57 +0100)
We don't want a global SIGPIPE setting. In particular we do not want
to run any of subprocesses with SIGPIPE ignored.
Just in case libcurl gets this wrong, tell it CURLOPT_NOSIGNAL, and do
it ourselves.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
dgit
patch
|
blob
|
history
diff --git
a/dgit
b/dgit
index 696978b2ee7abb53f26fa198652666b1e18c2e4d..5bd648a2b14447fef2919e582f02c25e6d189537 100755
(executable)
--- a/
dgit
+++ b/
dgit
@@
-1209,6
+1209,7
@@
sub archive_api_query_curl ($) {
my $response_body;
$setopt->(CURLOPT_REDIR_PROTOCOLS, CURLPROTO_HTTPS|CURLPROTO_HTTP);
$setopt->(CURLOPT_URL, $url);
+ $setopt->(CURLOPT_NOSIGNAL, 1);
$setopt->(CURLOPT_WRITEDATA, \$response_body);
if ($url =~ m#^https://([-.0-9a-z]+)/#) {
@@
-1221,6
+1222,8
@@
sub archive_api_query_curl ($) {
printdebug "archive api query: fetching $url...\n";
+ local $SIG{PIPE} = 'IGNORE';
+
my $x = $curl->perform();
fail f_ "fetch of %s failed (%s): %s",
$url, $curl->strerror($x), $curl->errbuf