chiark / gitweb /
dgit: libcurl usage: Install SIGPIPE handler ourselv
[dgit.git] / dgit
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