summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <[email protected]>2024-08-15 18:07:52 +0200
committerLudovic Courtès <[email protected]>2024-08-31 19:06:37 +0200
commitfa70c141552c76cf4dc9666f577bf6b471fa0d50 (patch)
tree83e5fedf0ea04840d76e868061ec49b434e25884
parent9af235335e8f8baf7f434a76570a954999231879 (diff)
substitute: Reopen connection upon “Error in the push function” from GnuTLS.
This works around an occasional issue where substitution stops abruptly due to “Error in the push function” from GnuTLS, as reported at <https://issues.guix.gnu.org/71238> by Richard Sent. * guix/scripts/substitute.scm (call-with-cached-connection): Add ‘error/push-error’ and ‘error/pull-error’ to the list of gnutls-error values for which the connection is reopened. Change-Id: Icf079dd10b16739f62fee15bc3d90bab77110576
-rwxr-xr-xguix/scripts/substitute.scm11
1 files changed, 10 insertions, 1 deletions
diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm
index 8bcbca5e7a..8db730a9c0 100755
--- a/guix/scripts/substitute.scm
+++ b/guix/scripts/substitute.scm
@@ -43,7 +43,11 @@
#:select (uri-abbreviation nar-uri-abbreviation
(open-connection-for-uri
. guix:open-connection-for-uri)))
- #:autoload (gnutls) (error/invalid-session error/again error/interrupted)
+ #:autoload (gnutls) (error/invalid-session
+ error/again
+ error/interrupted
+ error/push-error
+ error/pull-error)
#:use-module (guix progress)
#:use-module ((guix build syscalls)
#:select (set-thread-name))
@@ -426,6 +430,11 @@ server certificates."
(memq (first args)
(list error/invalid-session
+ ;; "Error in the push function" is
+ ;; usually a transient error.
+ error/push-error
+ error/pull-error
+
;; XXX: These two are not properly handled in
;; GnuTLS < 3.7.3, in
;; 'write_to_session_record_port'; see