diff options
Diffstat (limited to 'lib/net/ftp.rb')
-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 |