summaryrefslogtreecommitdiff
path: root/dgit
diff options
context:
space:
mode:
authorIan Jackson <ijackson@chiark.greenend.org.uk>2019-07-23 18:22:26 +0100
committerIan Jackson <ijackson@chiark.greenend.org.uk>2019-07-23 21:57:59 +0100
commit230d9f8ed1dd3f9e4ee4351af34e4bcb52c54ac8 (patch)
tree344970836b768ec80ac570e61c56e58cfc3718a8 /dgit
parentb0879c98de6356234edf1365c6553a694725d040 (diff)
dgit: libcurl usage: Install SIGPIPE handler ourselv
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>
Diffstat (limited to 'dgit')
-rwxr-xr-xdgit3
1 files changed, 3 insertions, 0 deletions
diff --git a/dgit b/dgit
index 696978b..5bd648a 100755
--- 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