diff options
author | Ludovic Courtès <[email protected]> | 2024-08-15 18:07:52 +0200 |
---|---|---|
committer | Ludovic Courtès <[email protected]> | 2024-08-31 19:06:37 +0200 |
commit | fa70c141552c76cf4dc9666f577bf6b471fa0d50 (patch) | |
tree | 83e5fedf0ea04840d76e868061ec49b434e25884 | |
parent | 9af235335e8f8baf7f434a76570a954999231879 (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-x | guix/scripts/substitute.scm | 11 |
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 |