guix_mirror_bot pushed a commit to branch master
in repository guix.

commit 274716b7a11b6ef8e039fa58ebfb9ecc6d59cd70
Author: Ludovic Courtès <[email protected]>
AuthorDate: Mon Jul 6 23:22:57 2026 +0200

    download: Define ‘default-connection-establishment-timeout’.
    
    * guix/build/download.scm (default-connection-establishment-timeout): New
    variable.
    (open-socket-for-uri, open-connection-for-uri): Use it.
    * guix/http-client.scm (http-fetch): Change default #:timeout value
    accordingly.
    
    Signed-off-by: Ludovic Courtès <[email protected]>
---
 guix/build/download.scm | 14 ++++++++++++--
 guix/http-client.scm    |  3 ++-
 2 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/guix/build/download.scm b/guix/build/download.scm
index 17418bf95b..8cf1814ea1 100644
--- a/guix/build/download.scm
+++ b/guix/build/download.scm
@@ -43,6 +43,7 @@
   #:export (%download-methods
             download-method-enabled?
 
+            default-connection-establishment-timeout
             open-socket-for-uri
             open-connection-for-uri
             http-fetch
@@ -384,7 +385,15 @@ host name without trailing dot."
    ((uri? uri-or-string) uri-or-string)
    (else (error "Invalid URI" uri-or-string))))
 
-(define* (open-socket-for-uri uri-or-string #:key timeout)
+(define default-connection-establishment-timeout
+  ;; Default value of the connection establishment timeout, in seconds, or #f
+  ;; to disable timeouts by default.
+  (make-parameter 30))
+
+(define* (open-socket-for-uri uri-or-string
+                              #:key
+                              (timeout
+                               (default-connection-establishment-timeout)))
   "Return an open input/output port for a connection to URI.  When TIMEOUT is
 not #f, it must be a (possibly inexact) number denoting the maximum duration
 in seconds to wait for the connection to complete; passed TIMEOUT, an
@@ -444,7 +453,8 @@ ETIMEDOUT error is raised."
 
 (define* (open-connection-for-uri uri
                                   #:key
-                                  timeout
+                                  (timeout
+                                   (default-connection-establishment-timeout))
                                   (verify-certificate? #t))
   "Like 'open-socket-for-uri', but also handle HTTPS connections.  When
 VERIFY-CERTIFICATE? is true, verify HTTPS server certificates."
diff --git a/guix/http-client.scm b/guix/http-client.scm
index fc58fbabf6..0656a8a563 100644
--- a/guix/http-client.scm
+++ b/guix/http-client.scm
@@ -47,6 +47,7 @@
                 #:select (open-socket-for-uri
                           (open-connection-for-uri
                            . guix:open-connection-for-uri)
+                          default-connection-establishment-timeout
                           resolve-uri-reference))
   #:re-export (open-socket-for-uri)
   #:export (&http-get-error
@@ -107,7 +108,7 @@
                      (verify-certificate? #t)
                      (headers '((user-agent . "GNU Guile")))
                      (log-port (current-error-port))
-                     timeout)
+                     (timeout (default-connection-establishment-timeout)))
   "Return an input port containing the data at URI, and the HTTP response from
 the server.  If TEXT? is true, the data at URI is considered to be textual.
 Follow any HTTP redirection.  When BUFFERED? is #f, return an unbuffered port,

Reply via email to