diff options
author | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-05-21 12:56:17 +0000 |
---|---|---|
committer | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-05-21 12:56:17 +0000 |
commit | f6fb038dee4a385e7d4e3b2816a96157401953b0 (patch) | |
tree | ea99caf246e2cbb70d89e279d56ab3d6da687df0 /lib/net | |
parent | acb10b8c32a7235b56e4f4346e8ed6bf5026166a (diff) | |
download | ruby-f6fb038dee4a385e7d4e3b2816a96157401953b0.tar.gz |
* 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
Diffstat (limited to 'lib/net')
-rw-r--r-- | lib/net/ftp.rb | 23 |
1 files changed, 13 insertions, 10 deletions
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 |