ftp-client: Fix off-by-one when trying addresses in 'ftp-open'.

* guix/ftp-client.scm (ftp-open): Change to use 'match' instead of
car/cdr, and fix off-by-one (was '(null? addresses)' instead of
'(null? (cdr addresses))'.)
This commit is contained in:
Ludovic Courtès 2015-11-22 14:16:36 +01:00
parent 5fb95cc592
commit d6d33984df
1 changed files with 24 additions and 23 deletions

View File

@ -139,8 +139,9 @@ TIMEOUT, an ETIMEDOUT error is raised."
AI_ADDRCONFIG)))
(let loop ((addresses addresses))
(let* ((ai (car addresses))
(s (socket (addrinfo:fam ai)
(match addresses
((ai rest ...)
(let ((s (socket (addrinfo:fam ai)
;; TCP/IP only
SOCK_STREAM IPPROTO_IP)))
@ -161,9 +162,9 @@ TIMEOUT, an ETIMEDOUT error is raised."
(lambda args
;; Connection failed, so try one of the other addresses.
(close s)
(if (null? addresses)
(if (null? rest)
(apply throw args)
(loop (cdr addresses))))))))
(loop rest)))))))))
(define (ftp-close conn)
(close (ftp-connection-socket conn)))