From f6fb038dee4a385e7d4e3b2816a96157401953b0 Mon Sep 17 00:00:00 2001 From: naruse Date: Mon, 21 May 2012 12:56:17 +0000 Subject: * lib/net/ftp.rb (Net::FTP#retrbinary): close only if conn is not nil because transfercmd may fail and return nil. * lib/net/ftp.rb (Net::FTP#retrlines): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35750 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/net/ftp.rb | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) (limited to 'lib/net') diff --git a/lib/net/ftp.rb b/lib/net/ftp.rb index 8694b09063..502783955b 100644 --- a/lib/net/ftp.rb +++ b/lib/net/ftp.rb @@ -494,7 +494,7 @@ module Net conn.read_timeout = 1 conn.read ensure - conn.close + conn.close if conn end voidresp end @@ -510,16 +510,19 @@ module Net def retrlines(cmd) # :yield: line synchronize do with_binary(false) do - conn = transfercmd(cmd) - loop do - line = conn.gets - break if line == nil - yield(line.sub(/\r?\n\z/, ""), !line.match(/\n\z/).nil?) + begin + conn = transfercmd(cmd) + loop do + line = conn.gets + break if line == nil + yield(line.sub(/\r?\n\z/, ""), !line.match(/\n\z/).nil?) + end + conn.shutdown(Socket::SHUT_WR) + conn.read_timeout = 1 + conn.read + ensure + conn.close if conn end - conn.shutdown(Socket::SHUT_WR) - conn.read_timeout = 1 - conn.read - conn.close voidresp end end -- cgit v1.2.3