Ludovic Courtès writes: > Christopher Baines skribis: > >> I don't think the approach of using SIGALARM here for the timeout will work >> well in all cases (e.g. when using Guile Fibers), so make it possible to avoid >> this. >> >> * guix/scripts/substitute.scm (download-nar): Pass the fetch timeout in as an >> option. >> >> Change-Id: I8cbe6cdfa10cdaa7d41974cbea56a95f5efecfe6 > > The patch LGTM. > > That said, maybe we should just pass #:timeout to ‘http-fetch’? It’s > not strictly equivalent because it only controls the timeout on > connection establishment, but in practice it should have the same > effect. I haven't done that yet, but longer term I do want to make more changes here. In particular, I think the way to go regarding timeouts is to use Guile suspendable ports and have the read/write waiters handle the timeout. The build coordinator does this [1], it's quite similar to what is happening with the http-fetch timeout in connect*, but it's compatible with fibers. 1: https://git.savannah.gnu.org/cgit/guix/build-coordinator.git/tree/guix-build-coordinator/utils/fibers.scm#n473