Feature #6088 » net.protocol.read_timeout.patch
lib/net/protocol.rb (working copy) | ||
---|---|---|
class ProtoCommandError < ProtocolError; end
|
||
class ProtoRetriableError < ProtocolError; end
|
||
ProtocRetryError = ProtoRetriableError
|
||
class ReadTimeout < Timeout::Error; end
|
||
class BufferedIO #:nodoc: internal use only
|
||
... | ... | |
if IO.select([@io], nil, nil, @read_timeout)
|
||
retry
|
||
else
|
||
raise Timeout::Error
|
||
raise Net::ReadTimeout
|
||
end
|
||
rescue IO::WaitWritable
|
||
# OpenSSL::Buffering#read_nonblock may fail with IO::WaitWritable.
|
||
... | ... | |
if IO.select(nil, [@io], nil, @read_timeout)
|
||
retry
|
||
else
|
||
raise Timeout::Error
|
||
raise Net::ReadTimeout
|
||
end
|
||
end
|
||
end
|
test/net/http/test_http.rb (working copy) | ||
---|---|---|
port = server.addr[1]
|
||
conn = Net::HTTP.new('localhost', port)
|
||
conn.read_timeout = 1
|
||
conn.open_timeout = 1
|
||
conn.read_timeout = 0.001
|
||
conn.open_timeout = 0.001
|
||
th = Thread.new do
|
||
assert_raise(Timeout::Error) {
|
||
assert_raise(Net::ReadTimeout) {
|
||
conn.get('/')
|
||
}
|
||
end
|