diff --git a/lib/net/ftp.rb b/lib/net/ftp.rb index 278dd51024..7a07d27437 100644 --- a/lib/net/ftp.rb +++ b/lib/net/ftp.rb @@ -190,6 +190,10 @@ module Net # account:: Account information for ACCT. # passive:: When +true+, the connection is in passive mode. Default: # +true+. + # open_timeout:: Number of seconds to wait for the connection to open. + # See Net::FTP#open_timeout for details. Default: +nil+. + # read_timeout:: Number of seconds to wait for one block to be read. + # See Net::FTP#read_timeout for details. Default: +60+. # debug_mode:: When +true+, all traffic to and from the server is # written to +$stdout+. Default: +false+. # @@ -242,8 +246,8 @@ module Net @resume = false @bare_sock = @sock = NullSocket.new @logged_in = false - @open_timeout = nil - @read_timeout = 60 + @open_timeout = options[:open_timeout] + @read_timeout = options[:read_timeout] || 60 if host if options[:port] connect(host, options[:port] || FTP_PORT) diff --git a/test/net/ftp/test_ftp.rb b/test/net/ftp/test_ftp.rb index 708def13bb..4e43cda24a 100644 --- a/test/net/ftp/test_ftp.rb +++ b/test/net/ftp/test_ftp.rb @@ -278,6 +278,16 @@ class FTPTest < Test::Unit::TestCase end end + def test_s_new_timeout_options + ftp = Net::FTP.new + assert_equal(nil, ftp.open_timeout) + assert_equal(60, ftp.read_timeout) + + ftp = Net::FTP.new(nil, open_timeout: 123, read_timeout: 234) + assert_equal(123, ftp.open_timeout) + assert_equal(234, ftp.read_timeout) + end + # TODO: How can we test open_timeout? sleep before accept cannot delay # connections. def _test_open_timeout_exceeded