summaryrefslogtreecommitdiff
path: root/guix/ftp-client.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2017-11-14 09:51:50 +0100
committerLudovic Courtès <ludo@gnu.org>2017-11-14 23:46:53 +0100
commit9f8605958ef86a0054a04297917ca32ed58d9d56 (patch)
tree74ad48c8a8a5d963c7b0279ba84c1c3b58ef74ee /guix/ftp-client.scm
parent5724a14e71f21ccfe865ed6fadae3f7683fc66e2 (diff)
downloadgnu-guix-9f8605958ef86a0054a04297917ca32ed58d9d56.tar
gnu-guix-9f8605958ef86a0054a04297917ca32ed58d9d56.tar.gz
download: Pass the timeout to 'ftp-retr'.
This ensures the timeout applies when connecting to the port returned by PASV. * guix/ftp-client.scm (ftp-list): Add #:timeout parameter. Use 'connect*' instead of 'connect' and pass TIMEOUT. (ftp-retr): Likewise. * guix/build/download.scm (ftp-fetch): Pass TIMEOUT to 'ftp-retr'.
Diffstat (limited to 'guix/ftp-client.scm')
-rw-r--r--guix/ftp-client.scm11
1 files changed, 6 insertions, 5 deletions
diff --git a/guix/ftp-client.scm b/guix/ftp-client.scm
index 054a00ad7f..0b8f61c276 100644
--- a/guix/ftp-client.scm
+++ b/guix/ftp-client.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -228,7 +228,7 @@ TIMEOUT, an ETIMEDOUT error is raised."
(sockaddr:scopeid sa)))
(else #f))))
-(define* (ftp-list conn #:optional directory)
+(define* (ftp-list conn #:optional directory #:key timeout)
(if directory
(ftp-chdir conn directory))
@@ -236,7 +236,7 @@ TIMEOUT, an ETIMEDOUT error is raised."
(ai (ftp-connection-addrinfo conn))
(s (socket (addrinfo:fam ai) (addrinfo:socktype ai)
(addrinfo:protocol ai))))
- (connect s (address-with-port (addrinfo:addr ai) port))
+ (connect* s (address-with-port (addrinfo:addr ai) port) timeout)
(setvbuf s _IOLBF)
(dynamic-wind
@@ -270,7 +270,8 @@ TIMEOUT, an ETIMEDOUT error is raised."
(or (eqv? code 226)
(throw 'ftp-error conn "LIST" code message)))))))
-(define* (ftp-retr conn file #:optional directory)
+(define* (ftp-retr conn file #:optional directory
+ #:key timeout)
"Retrieve FILE from DIRECTORY (or, if omitted, the current directory) from
FTP connection CONN. Return a binary port to that file. The returned port
must be closed before CONN can be used for other purposes."
@@ -291,7 +292,7 @@ must be closed before CONN can be used for other purposes."
(or (eqv? code 226)
(throw 'ftp-error conn "LIST" code message))))
- (connect s (address-with-port (addrinfo:addr ai) port))
+ (connect* s (address-with-port (addrinfo:addr ai) port) timeout)
(setvbuf s _IOLBF)
(%ftp-command (string-append "RETR " file)