civodul pushed a commit to branch master
in repository guix.

commit 1b9aefa394a57dabe38e0658a3b612e962d3fc5e
Author: Ludovic Courtès <l...@gnu.org>
Date:   Thu Nov 12 23:15:18 2015 +0100

    download: Always use AI_ADDRCONFIG when resolving host names.
    
    * guix/build/download.scm (open-socket-for-uri): Always pass
      AI_ADDRCONFIG to 'getaddrinfo' as recommended in the fine Guile
      manual.
    * guix/ftp-client.scm (ftp-open): Ditto.
---
 guix/build/download.scm |   10 +++++-----
 guix/ftp-client.scm     |    4 +++-
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/guix/build/download.scm b/guix/build/download.scm
index 17e8f8c..8843804 100644
--- a/guix/build/download.scm
+++ b/guix/build/download.scm
@@ -298,8 +298,8 @@ 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
 ETIMEDOUT error is raised."
   ;; Includes a fix for <http://bugs.gnu.org/15368> which affects Guile's
-  ;; 'open-socket-for-uri' up to 2.0.11 included, and uses 'connect*' instead
-  ;; of 'connect'.
+  ;; 'open-socket-for-uri' up to 2.0.11 included, uses 'connect*' instead
+  ;; of 'connect', and uses AI_ADDRCONFIG.
 
   (define http-proxy (current-http-proxy))
   (define uri (ensure-uri (or http-proxy uri-or-string)))
@@ -309,9 +309,9 @@ ETIMEDOUT error is raised."
        (getaddrinfo (uri-host uri)
                     (cond (port => number->string)
                           (else (symbol->string (uri-scheme uri))))
-                    (if port
-                        AI_NUMERICSERV
-                        0))
+                    (if (number? port)
+                        (logior AI_ADDRCONFIG AI_NUMERICSERV)
+                        AI_ADDRCONFIG))
        (lambda (ai1 ai2)
          (equal? (addrinfo:addr ai1) (addrinfo:addr ai2))))))
 
diff --git a/guix/ftp-client.scm b/guix/ftp-client.scm
index 9ea878a..f02d460 100644
--- a/guix/ftp-client.scm
+++ b/guix/ftp-client.scm
@@ -134,7 +134,9 @@ TIMEOUT, an ETIMEDOUT error is raised."
   (define addresses
     (getaddrinfo host
                  (if (number? port) (number->string port) port)
-                 (if (number? port) AI_NUMERICSERV 0)))
+                 (if (number? port)
+                     (logior AI_ADDRCONFIG AI_NUMERICSERV)
+                     AI_ADDRCONFIG)))
 
   (let loop ((addresses addresses))
     (let* ((ai (car addresses))

Reply via email to