From 8aad4296239828d29f7ab6938d7f6f4e84ee7135 Mon Sep 17 00:00:00 2001 From: shugo Date: Wed, 11 Nov 2015 03:48:45 +0000 Subject: * lib/net/ftp.rb (initialize): Connections are in passive mode per default now. The default mode can be changed by Net::FTP.default_passive=. * lib/net/ftp.rb (default_passive=, default_passive): new methods. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52532 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 8 ++++++++ NEWS | 4 ++++ lib/net/ftp.rb | 17 +++++++++++++++-- lib/open-uri.rb | 2 +- test/net/ftp/test_ftp.rb | 3 +++ 5 files changed, 31 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 05825bf79d..9cead6ee55 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +Wed Nov 11 11:58:38 2015 Shugo Maeda + + * lib/net/ftp.rb (initialize): Connections are in passive mode per + default now. The default mode can be changed by + Net::FTP.default_passive=. + + * lib/net/ftp.rb (default_passive=, default_passive): new methods. + Wed Nov 11 09:03:12 2015 Nobuyoshi Nakada * sprintf.c (rb_str_format): respect default value of a hash. no diff --git a/NEWS b/NEWS index 075c214860..d71b913142 100644 --- a/NEWS +++ b/NEWS @@ -196,6 +196,10 @@ with all sufficient information, see the ChangeLog file. * Net::Telnet * Net::Telnet is extracted to net-telnet gem. It's unmaintain code. +* Net::FTP + * Connections are in passive mode per default now. The default mode can + be changed by Net::FTP.default_passive=. + * Rake * Rake is removed from stdlib. diff --git a/lib/net/ftp.rb b/lib/net/ftp.rb index 879206c7dd..26bca1a54a 100644 --- a/lib/net/ftp.rb +++ b/lib/net/ftp.rb @@ -80,12 +80,13 @@ module Net FTP_PORT = 21 CRLF = "\r\n" DEFAULT_BLOCKSIZE = BufferedIO::BUFSIZE + @@default_passive = true # :startdoc: # When +true+, transfers are performed in binary mode. Default: +true+. attr_reader :binary - # When +true+, the connection is in passive mode. Default: +false+. + # When +true+, the connection is in passive mode. Default: +true+. attr_accessor :passive # When +true+, all traffic to and from the server is written @@ -124,6 +125,18 @@ module Net # The server's last response. attr_reader :last_response + # When +true+, connections are in passive mode per default. + # Default: +true+. + def self.default_passive=(value) + @@default_passive = value + end + + # When +true+, connections are in passive mode per default. + # Default: +true+. + def self.default_passive + @@default_passive + end + # # A synonym for FTP.new, but with a mandatory host parameter. # @@ -151,7 +164,7 @@ module Net def initialize(host = nil, user = nil, passwd = nil, acct = nil) super() @binary = true - @passive = false + @passive = @@default_passive @debug_mode = false @resume = false @sock = NullSocket.new diff --git a/lib/open-uri.rb b/lib/open-uri.rb index c63e5292aa..9e4a5e24c1 100644 --- a/lib/open-uri.rb +++ b/lib/open-uri.rb @@ -773,7 +773,7 @@ module URI # The access sequence is defined by RFC 1738 ftp = Net::FTP.new ftp.connect(self.hostname, self.port) - ftp.passive = true if !options[:ftp_active_mode] + ftp.passive = !options[:ftp_active_mode] # todo: extract user/passwd from .netrc. user = 'anonymous' passwd = nil diff --git a/test/net/ftp/test_ftp.rb b/test/net/ftp/test_ftp.rb index a8d34c62de..3af00e7da9 100644 --- a/test/net/ftp/test_ftp.rb +++ b/test/net/ftp/test_ftp.rb @@ -11,9 +11,12 @@ class FTPTest < Test::Unit::TestCase def setup @thread = nil + @default_passive = Net::FTP.default_passive + Net::FTP.default_passive = false end def teardown + Net::FTP.default_passive = @default_passive if @thread @thread.join end -- cgit v1.2.3