Subject: bug#62476: ‘guix substitute’ poorly handles premature TLS termination

From: Ludovic Courtès <[email-masked]>
Date: Mon, 27 Mar 2023 10:14:51 +0200

I got a report showing this:

> $ guix shell …
> […]
> substitute: mise à jour des substituts depuis « https://ci.guix.gnu.org »...   0.0 %guix substitute: erreur : Erreur TLS dans la procédure « handshake » : La connexion TLS n’a pas été terminée correctement.
> guix shell: erreur : `/gnu/store/aca6i8lqgdfy0gwd4m8ql3kv5a0gp6c9-guix-command substitute' died unexpectedly

This corresponds to GnuTLS exception ‘error/premature-termination’ while
connecting to a substitute server, from ‘fetch-narinfos’.

Why ‘handshake’ fails, I don’t know, but at any rate ‘guix substitute’
shouldn’t error out when that happens; preferably, it should skip that
substitute server and keep going, like it does for other transient
networking errors in ‘call-with-connection-error-handling’.

Ludo’.