Feature #6088 » net.read_timeout.patch
lib/net/pop.rb (working copy) | ||
---|---|---|
# Seconds to wait until a connection is opened.
|
||
# If the POP3 object cannot open a connection within this time,
|
||
# it raises a TimeoutError exception.
|
||
# it raises a Net::OpenTimeout exception.
|
||
attr_accessor :open_timeout
|
||
# Seconds to wait until reading one block (by one read(1) call).
|
||
# If the POP3 object cannot complete a read() within this time,
|
||
# it raises a TimeoutError exception.
|
||
# it raises a Net::ReadTimeout exception.
|
||
attr_reader :read_timeout
|
||
# Set the read timeout.
|
lib/net/http.rb (working copy) | ||
---|---|---|
# Number of seconds to wait for the connection to open. Any number
|
||
# may be used, including Floats for fractional seconds. If the HTTP
|
||
# object cannot open a connection in this many seconds, it raises a
|
||
# TimeoutError exception.
|
||
# Net::OpenTimeout exception.
|
||
attr_accessor :open_timeout
|
||
# Number of seconds to wait for one block to be read (via one read(2)
|
||
# call). Any number may be used, including Floats for fractional
|
||
# seconds. If the HTTP object cannot read data in this many seconds,
|
||
# it raises a TimeoutError exception.
|
||
# it raises a Net::ReadTimeout exception.
|
||
attr_reader :read_timeout
|
||
# Setter for the read_timeout attribute.
|
lib/net/protocol.rb (working copy) | ||
---|---|---|
class ProtoCommandError < ProtocolError; end
|
||
class ProtoRetriableError < ProtocolError; end
|
||
ProtocRetryError = ProtoRetriableError
|
||
##
|
||
# OpenTimeout, a subclass of Timeout::Error, is raised if a connection cannot
|
||
# be created within the open_timeout.
|
||
class OpenTimeout < Timeout::Error; end
|
||
##
|
||
# ReadTimeout, a subclass of Timeout::Error, is raised if a chunk of the
|
||
# response cannot be read within the read_timeout.
|
||
class ReadTimeout < Timeout::Error; end
|
||
class BufferedIO #:nodoc: internal use only
|
||
def initialize(io)
|
||
... | ... | |
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
|
lib/net/smtp.rb (working copy) | ||
---|---|---|
# Seconds to wait while attempting to open a connection.
|
||
# If the connection cannot be opened within this time, a
|
||
# TimeoutError is raised.
|
||
# Net::OpenTimeout is raised.
|
||
attr_accessor :open_timeout
|
||
# Seconds to wait while reading one block (by one read(2) call).
|
||
# If the read(2) call does not complete within this time, a
|
||
# TimeoutError is raised.
|
||
# Net::ReadTimeout is raised.
|
||
attr_reader :read_timeout
|
||
# Set the number of seconds to wait until timing-out a read(2)
|
||
... | ... | |
# * Net::SMTPSyntaxError
|
||
# * Net::SMTPFatalError
|
||
# * Net::SMTPUnknownError
|
||
# * Net::OpenTimeout
|
||
# * Net::ReadTimeout
|
||
# * IOError
|
||
# * TimeoutError
|
||
#
|
||
def SMTP.start(address, port = nil, helo = 'localhost',
|
||
user = nil, secret = nil, authtype = nil,
|
||
... | ... | |
# * Net::SMTPSyntaxError
|
||
# * Net::SMTPFatalError
|
||
# * Net::SMTPUnknownError
|
||
# * Net::OpenTimeout
|
||
# * Net::ReadTimeout
|
||
# * IOError
|
||
# * TimeoutError
|
||
#
|
||
def start(helo = 'localhost',
|
||
user = nil, secret = nil, authtype = nil) # :yield: smtp
|
||
... | ... | |
# * Net::SMTPSyntaxError
|
||
# * Net::SMTPFatalError
|
||
# * Net::SMTPUnknownError
|
||
# * Net::ReadTimeout
|
||
# * IOError
|
||
# * TimeoutError
|
||
#
|
||
def send_message(msgstr, from_addr, *to_addrs)
|
||
raise IOError, 'closed session' unless @socket
|
||
... | ... | |
# * Net::SMTPSyntaxError
|
||
# * Net::SMTPFatalError
|
||
# * Net::SMTPUnknownError
|
||
# * Net::ReadTimeout
|
||
# * IOError
|
||
# * TimeoutError
|
||
#
|
||
def open_message_stream(from_addr, *to_addrs, &block) # :yield: stream
|
||
raise IOError, 'closed session' unless @socket
|
lib/net/telnet.rb (working copy) | ||
---|---|---|
#
|
||
# Timeout:: the number of seconds to wait before timing out both the
|
||
# initial attempt to connect to host (in this constructor),
|
||
# and all attempts to read data from the host (in #waitfor(),
|
||
# #cmd(), and #login()). Exceeding this timeout causes a
|
||
# TimeoutError to be raised. The default value is 10 seconds.
|
||
# which raises a Net::OpenTimeout, and all attempts to read data
|
||
# from the host, which raises a Net::ReadTimeout (in #waitfor(),
|
||
# #cmd(), and #login()). The default value is 10 seconds.
|
||
# You can disable the timeout by setting this value to false.
|
||
# In this case, the connect attempt will eventually timeout
|
||
# on the underlying connect(2) socket call with an
|
||
# Errno::ETIMEDOUT error (but generally only after a few
|
||
# minutes), but other attempts to read data from the host
|
||
# will hand indefinitely if no data is forthcoming.
|
||
# will hang indefinitely if no data is forthcoming.
|
||
#
|
||
# Waittime:: the amount of time to wait after seeing what looks like a
|
||
# prompt (that is, received data that matches the Prompt
|
||
... | ... | |
rest = ''
|
||
until(prompt === line and not IO::select([@sock], nil, nil, waittime))
|
||
unless IO::select([@sock], nil, nil, time_out)
|
||
raise TimeoutError, "timed out while waiting for more data"
|
||
raise Net::ReadTimeout, "timed out while waiting for more data"
|
||
end
|
||
begin
|
||
c = @sock.readpartial(1024 * 1024)
|
- « Previous
- 1
- 2
- 3
- Next »