From af91c2d540ef437e3f663b2c18c76dc2b94e13d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Mon, 27 Mar 2023 10:55:31 +0200 Subject: [PATCH] substitute: Gracefully handle TLS termination while fetching narinfos. Fixes . * guix/substitutes.scm (call-with-connection-error-handling): Add 'gnutls-error case. --- guix/substitutes.scm | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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 +;;; Copyright © 2013-2021, 2023 Ludovic Courtès ;;; Copyright © 2014 Nikita Karetnikov ;;; Copyright © 2018 Kyle Meyer ;;; Copyright © 2020 Christopher Baines @@ -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)))))