From 230d9f8ed1dd3f9e4ee4351af34e4bcb52c54ac8 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Tue, 23 Jul 2019 18:22:26 +0100 Subject: 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 --- dgit | 3 +++ 1 file changed, 3 insertions(+) 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 -- cgit v1.2.3