ruby-changes:23253
From: drbrain <ko1@a...>
Date: Thu, 12 Apr 2012 06:21:04 +0900 (JST)
Subject: [ruby-changes:23253] drbrain:r35304 (trunk): * lib/net/protocol.rb (module Net): Added ReadTimeout to match
drbrain 2012-04-12 06:20:51 +0900 (Thu, 12 Apr 2012) New Revision: 35304 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=35304 Log: * lib/net/protocol.rb (module Net): Added ReadTimeout to match OpenTimeout. ReadTimeout is now raised by rbuf_fill instead of Timeout::Error to help users distinguish what type of timeout occurred. [ruby-trunk - Feature #6088] * lib/net/pop.rb (module Net): Updated documentation for ReadTimeout and OpenTimeout. * lib/net/http.rb (module Net): ditto * lib/net/smtp.rb (module Net): ditto * lib/net/telnet.rb (module Net): Net::ReadTimeout is now raised in waitfor to match Net::Protocol. * test/net/http/test_http.rb: Updated Timeout::Error expectation to Net::ReadTimeout. * test/net/ftp/test_ftp.rb: ditto Modified files: trunk/ChangeLog trunk/lib/net/http.rb trunk/lib/net/pop.rb trunk/lib/net/protocol.rb trunk/lib/net/smtp.rb trunk/lib/net/telnet.rb trunk/test/net/ftp/test_ftp.rb trunk/test/net/http/test_http.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 35303) +++ ChangeLog (revision 35304) @@ -1,3 +1,19 @@ +Thu Apr 12 06:15:44 2012 Eric Hodel <drbrain@s...> + + * lib/net/protocol.rb (module Net): Added ReadTimeout to match + OpenTimeout. ReadTimeout is now raised by rbuf_fill instead of + Timeout::Error to help users distinguish what type of timeout + occurred. [ruby-trunk - Feature #6088] + * lib/net/pop.rb (module Net): Updated documentation for ReadTimeout + and OpenTimeout. + * lib/net/http.rb (module Net): ditto + * lib/net/smtp.rb (module Net): ditto + * lib/net/telnet.rb (module Net): Net::ReadTimeout is now raised in + waitfor to match Net::Protocol. + * test/net/http/test_http.rb: Updated Timeout::Error expectation to + Net::ReadTimeout. + * test/net/ftp/test_ftp.rb: ditto + Thu Apr 12 05:27:01 2012 Eric Hodel <drbrain@s...> * lib/webrick/server.rb (module WEBrick::GenericServer): A server Index: lib/net/pop.rb =================================================================== --- lib/net/pop.rb (revision 35303) +++ lib/net/pop.rb (revision 35304) @@ -498,12 +498,12 @@ # 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. Index: lib/net/http.rb =================================================================== --- lib/net/http.rb (revision 35303) +++ lib/net/http.rb (revision 35304) @@ -624,13 +624,13 @@ # 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. Index: lib/net/protocol.rb =================================================================== --- lib/net/protocol.rb (revision 35303) +++ lib/net/protocol.rb (revision 35304) @@ -44,9 +44,20 @@ 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) @io = io @@ -144,7 +155,7 @@ 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. @@ -152,7 +163,7 @@ if IO.select(nil, [@io], nil, @read_timeout) retry else - raise Timeout::Error + raise Net::ReadTimeout end end end Index: lib/net/smtp.rb =================================================================== --- lib/net/smtp.rb (revision 35303) +++ lib/net/smtp.rb (revision 35304) @@ -364,12 +364,12 @@ # 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) @@ -448,8 +448,9 @@ # * 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, @@ -509,8 +510,9 @@ # * Net::SMTPSyntaxError # * Net::SMTPFatalError # * Net::SMTPUnknownError + # * Net::OpenTimeout + # * Net::ReadTimeout # * IOError - # * TimeoutError # def start(helo = 'localhost', user = nil, secret = nil, authtype = nil) # :yield: smtp @@ -653,8 +655,8 @@ # * Net::SMTPSyntaxError # * Net::SMTPFatalError # * Net::SMTPUnknownError + # * Net::ReadTimeout # * IOError - # * TimeoutError # def send_message(msgstr, from_addr, *to_addrs) raise IOError, 'closed session' unless @socket @@ -706,8 +708,8 @@ # * 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 Index: lib/net/telnet.rb =================================================================== --- lib/net/telnet.rb (revision 35303) +++ lib/net/telnet.rb (revision 35304) @@ -243,15 +243,15 @@ # # 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 @@ -554,7 +554,7 @@ 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) Index: test/net/http/test_http.rb =================================================================== --- test/net/http/test_http.rb (revision 35303) +++ test/net/http/test_http.rb (revision 35304) @@ -204,7 +204,7 @@ conn.open_timeout = 0.01 th = Thread.new do - assert_raise(Timeout::Error) { + assert_raise(Net::ReadTimeout) { conn.get('/') } end Index: test/net/ftp/test_ftp.rb =================================================================== --- test/net/ftp/test_ftp.rb (revision 35303) +++ test/net/ftp/test_ftp.rb (revision 35304) @@ -190,7 +190,7 @@ ftp = Net::FTP.new ftp.read_timeout = 0.2 ftp.connect(SERVER_ADDR, server.port) - assert_raise(Timeout::Error) do + assert_raise(Net::ReadTimeout) do ftp.login end assert_match(/\AUSER /, commands.shift) @@ -283,7 +283,7 @@ assert_match(/\AUSER /, commands.shift) assert_match(/\APASS /, commands.shift) assert_equal("TYPE I\r\n", commands.shift) - assert_raise(Timeout::Error) do + assert_raise(Net::ReadTimeout) do ftp.list end assert_equal("TYPE A\r\n", commands.shift) @@ -393,7 +393,7 @@ assert_match(/\APASS /, commands.shift) assert_equal("TYPE I\r\n", commands.shift) buf = "" - assert_raise(Timeout::Error) do + assert_raise(Net::ReadTimeout) do ftp.retrbinary("RETR foo", 1024) do |s| buf << s end -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/