summaryrefslogtreecommitdiff
path: root/guix/substitutes.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2023-03-27 10:55:31 +0200
committerLudovic Courtès <ludo@gnu.org>2023-03-27 18:48:51 +0200
commitaf91c2d540ef437e3f663b2c18c76dc2b94e13d2 (patch)
treec22f19914fbc6e2499b00c16e12fe4a3bd056f97 /guix/substitutes.scm
parent3b9738aeac3dc0d1d2d119abd6370f569da5a1a6 (diff)
substitute: Gracefully handle TLS termination while fetching narinfos.
Fixes <https://issues.guix.gnu.org/62476>. * guix/substitutes.scm (call-with-connection-error-handling): Add 'gnutls-error case.
Diffstat (limited to 'guix/substitutes.scm')
-rw-r--r--guix/substitutes.scm10
1 files changed, 9 insertions, 1 deletions
diff --git a/guix/substitutes.scm b/guix/substitutes.scm
index 84c7be83ca..e732096933 100644
--- a/guix/substitutes.scm
+++ b/guix/substitutes.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013-2021, 2023 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2018 Kyle Meyer <kyle@kyleam.com>
;;; Copyright © 2020 Christopher Baines <mail@cbaines.net>
@@ -35,6 +35,7 @@
#:select ((open-connection-for-uri
. guix:open-connection-for-uri)
resolve-uri-reference))
+ #:autoload (gnutls) (error->string error/premature-termination)
#:use-module (guix progress)
#:use-module (ice-9 match)
#:use-module (ice-9 format)
@@ -152,6 +153,13 @@ indicates that PATH is unavailable at CACHE-URL."
(strerror
(system-error-errno `(system-error ,@args)))))
#f)
+ (('gnutls-error error proc . rest)
+ (if (eq? error error/premature-termination)
+ (begin
+ (warning (G_ "~a: TLS connection failed: in ~a: ~a~%") host
+ proc (error->string error))
+ #f)
+ (apply throw 'gnutls-error error proc rest)))
(args
(apply throw args)))))