substitutes: Tolerate GnuTLS push/pull errors when fetching narinfos.

Fixes <https://issues.guix.gnu.org/75679>.

Fixes this infamous error:

  substitute: looking for substitutes on 'https://bordeaux.guix.gnu.org'...   0.0%guix substitute: error: TLS error in procedure 'write_to_session_record_port': Error in the push function.
  guix system: error: `/gnu/store/…-guix-1.4.0-32.5f6fdad/bin/guix substitute' died unexpectedly

* guix/substitutes.scm (call-with-connection-error-handling): Report
‘error/push-error’ and ‘error/pull-error’ as mere warnings.

Reported-by: Timo Wilken <git@twilken.net>
Change-Id: Ibc507cb88b164cbb91dff95aa18d9974c573f7c9
This commit is contained in:
Ludovic Courtès 2025-02-25 16:54:10 +01:00
parent 78a204ee98
commit c92fbc83d4
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013-2021, 2023-2024 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013-2021, 2023-2025 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,7 +35,10 @@
#:select ((open-connection-for-uri
. guix:open-connection-for-uri)
resolve-uri-reference))
#:autoload (gnutls) (error->string error/premature-termination)
#:autoload (gnutls) (error->string
error/premature-termination
error/pull-error
error/push-error)
#:use-module (guix progress)
#:use-module (ice-9 match)
#:use-module (ice-9 format)
@ -154,7 +157,9 @@ indicates that PATH is unavailable at CACHE-URL."
(system-error-errno `(system-error ,@args)))))
#f)
(('gnutls-error error proc . rest)
(if (eq? error error/premature-termination)
(if (memq error (list error/premature-termination
error/pull-error
error/push-error))
(begin
(warning (G_ "~a: TLS connection failed: in ~a: ~a~%") host
proc (error->string error))