* lib/net/ftp.rb (Net::FTP#transfercmd): rescue shutdown.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35733 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
d795f2d1a8
commit
52f0c6780e
@ -1,3 +1,7 @@
|
|||||||
|
Mon May 21 11:26:17 2012 NARUSE, Yui <naruse@ruby-lang.org>
|
||||||
|
|
||||||
|
* lib/net/ftp.rb (Net::FTP#transfercmd): rescue shutdown.
|
||||||
|
|
||||||
Sun May 20 23:00:11 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
Sun May 20 23:00:11 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
* ext/extmk.rb (extmake): reopen $stdout to NULL, since setting
|
* ext/extmk.rb (extmake): reopen $stdout to NULL, since setting
|
||||||
|
@ -433,7 +433,7 @@ module Net
|
|||||||
end
|
end
|
||||||
conn = BufferedSocket.new(sock.accept)
|
conn = BufferedSocket.new(sock.accept)
|
||||||
conn.read_timeout = @read_timeout
|
conn.read_timeout = @read_timeout
|
||||||
sock.shutdown(Socket::SHUT_WR)
|
sock.shutdown(Socket::SHUT_WR) rescue nil
|
||||||
sock.read rescue nil
|
sock.read rescue nil
|
||||||
sock.close
|
sock.close
|
||||||
end
|
end
|
||||||
@ -483,6 +483,7 @@ module Net
|
|||||||
def retrbinary(cmd, blocksize, rest_offset = nil) # :yield: data
|
def retrbinary(cmd, blocksize, rest_offset = nil) # :yield: data
|
||||||
synchronize do
|
synchronize do
|
||||||
with_binary(true) do
|
with_binary(true) do
|
||||||
|
begin
|
||||||
conn = transfercmd(cmd, rest_offset)
|
conn = transfercmd(cmd, rest_offset)
|
||||||
loop do
|
loop do
|
||||||
data = conn.read(blocksize)
|
data = conn.read(blocksize)
|
||||||
@ -492,7 +493,9 @@ module Net
|
|||||||
conn.shutdown(Socket::SHUT_WR)
|
conn.shutdown(Socket::SHUT_WR)
|
||||||
conn.read_timeout = 1
|
conn.read_timeout = 1
|
||||||
conn.read
|
conn.read
|
||||||
|
ensure
|
||||||
conn.close
|
conn.close
|
||||||
|
end
|
||||||
voidresp
|
voidresp
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -6,6 +6,16 @@ require "stringio"
|
|||||||
class FTPTest < Test::Unit::TestCase
|
class FTPTest < Test::Unit::TestCase
|
||||||
SERVER_ADDR = "127.0.0.1"
|
SERVER_ADDR = "127.0.0.1"
|
||||||
|
|
||||||
|
def setup
|
||||||
|
@thread = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
def teardown
|
||||||
|
if @thread
|
||||||
|
@thread.join
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def test_not_connected
|
def test_not_connected
|
||||||
ftp = Net::FTP.new
|
ftp = Net::FTP.new
|
||||||
assert_raise(Net::FTPConnectionError) do
|
assert_raise(Net::FTPConnectionError) do
|
||||||
@ -272,7 +282,8 @@ class FTPTest < Test::Unit::TestCase
|
|||||||
conn.print(l, "\r\n")
|
conn.print(l, "\r\n")
|
||||||
end
|
end
|
||||||
conn.shutdown(Socket::SHUT_WR)
|
conn.shutdown(Socket::SHUT_WR)
|
||||||
conn.read
|
conn.read_timeout = 1
|
||||||
|
conn.read unless conn.eof?
|
||||||
conn.close
|
conn.close
|
||||||
sock.print("226 Directory send OK.\r\n")
|
sock.print("226 Directory send OK.\r\n")
|
||||||
}
|
}
|
||||||
@ -586,7 +597,7 @@ class FTPTest < Test::Unit::TestCase
|
|||||||
|
|
||||||
def create_ftp_server(sleep_time = nil)
|
def create_ftp_server(sleep_time = nil)
|
||||||
server = TCPServer.new(SERVER_ADDR, 0)
|
server = TCPServer.new(SERVER_ADDR, 0)
|
||||||
Thread.start do
|
@thread = Thread.start do
|
||||||
begin
|
begin
|
||||||
if sleep_time
|
if sleep_time
|
||||||
sleep(sleep_time)
|
sleep(sleep_time)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user