diff options
author | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2019-07-23 18:22:26 +0100 |
---|---|---|
committer | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2019-07-23 21:57:59 +0100 |
commit | 230d9f8ed1dd3f9e4ee4351af34e4bcb52c54ac8 (patch) | |
tree | 344970836b768ec80ac570e61c56e58cfc3718a8 /dgit | |
parent | b0879c98de6356234edf1365c6553a694725d040 (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-x | dgit | 3 |
1 files changed, 3 insertions, 0 deletions
@@ -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 |