ruby-changes:22794
From: drbrain <ko1@a...>
Date: Tue, 28 Feb 2012 14:16:13 +0900 (JST)
Subject: [ruby-changes:22794] drbrain:r34843 (trunk): * lib/net/protocol.rb: Add OpenTimeout subclass of Timeout::Error
drbrain 2012-02-28 14:15:54 +0900 (Tue, 28 Feb 2012) New Revision: 34843 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=34843 Log: * lib/net/protocol.rb: Add OpenTimeout subclass of Timeout::Error * lib/net/pop.rb: Modernize Timeout usage. Patch by Eric Wong. Use Net::OpenTimeout instead of Timeout::Error. [Bug #5765] * lib/net/http.rb: ditto * lib/net/smtp.rb: ditto * lib/net/telnet.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/http/test_https.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 34842) +++ ChangeLog (revision 34843) @@ -1,3 +1,21 @@ +Tue Feb 28 14:15:29 2012 Eric Hodel <drbrain@s...> + + * lib/net/protocol.rb: Add OpenTimeout subclass of Timeout::Error + * lib/net/pop.rb: Modernize Timeout usage. Patch by Eric Wong. + Use Net::OpenTimeout instead of Timeout::Error. [Bug #5765] + * lib/net/http.rb: ditto + * lib/net/smtp.rb: ditto + * lib/net/telnet.rb: ditto + +Tue Feb 28 14:06:36 2012 Eric Hodel <drbrain@s...> + + * lib/net/protocol.rb: Add OpenTimeout subclass of Timeout::Error + * lib/net/pop.rb: Modernize Timeout usage. Patch by Eric Wong. + Use Net::OpenTimeout instead of Timeout::Error. [Bug #5765] + * lib/net/http.rb: ditto + * lib/net/smtp.rb: ditto + * lib/net/telnet.rb: ditto + Tue Feb 28 13:51:12 2012 Eric Hodel <drbrain@s...> * lib/net/http.rb: Retry HTTP requests for additional network errors. Index: lib/net/pop.rb =================================================================== --- lib/net/pop.rb (revision 34842) +++ lib/net/pop.rb (revision 34843) @@ -542,7 +542,9 @@ # internal method for Net::POP3.start def do_start(account, password) # :nodoc: - s = timeout(@open_timeout) { TCPSocket.open(@address, port) } + s = Timeout.timeout(@open_timeout, Net::OpenTimeout) do + TCPSocket.open(@address, port) + end if use_ssl? raise 'openssl library not installed' unless defined?(OpenSSL) context = OpenSSL::SSL::SSLContext.new Index: lib/net/http.rb =================================================================== --- lib/net/http.rb (revision 34842) +++ lib/net/http.rb (revision 34843) @@ -360,9 +360,6 @@ # class HTTP < Protocol - class OpenTimeout < Timeout::Error - end - # :stopdoc: Revision = %q$Revision$.split[1] HTTPVersion = '1.1' @@ -791,7 +788,7 @@ def connect D "opening connection to #{conn_address()}..." - s = timeout(@open_timeout, OpenTimeout) { + s = Timeout.timeout(@open_timeout, Net::OpenTimeout) { TCPSocket.open(conn_address(), conn_port()) } D "opened" @@ -829,7 +826,7 @@ end # Server Name Indication (SNI) RFC 3546 s.hostname = @address if s.respond_to? :hostname= - timeout(@open_timeout, OpenTimeout) { s.connect } + Timeout.timeout(@open_timeout, Net::OpenTimeout) { s.connect } if @ssl_context.verify_mode != OpenSSL::SSL::VERIFY_NONE s.post_connection_check(@address) end @@ -1363,7 +1360,7 @@ rescue IOError, EOFError, Errno::ECONNRESET, Errno::ECONNABORTED, Errno::EPIPE, OpenSSL::SSL::SSLError, Timeout::Error => exception - raise if OpenTimeout === exception + raise if Net::OpenTimeout === exception if count == 0 && IDEMPOTENT_METHODS_.include?(req.method) count += 1 Index: lib/net/protocol.rb =================================================================== --- lib/net/protocol.rb (revision 34842) +++ lib/net/protocol.rb (revision 34843) @@ -44,6 +44,7 @@ class ProtoCommandError < ProtocolError; end class ProtoRetriableError < ProtocolError; end ProtocRetryError = ProtoRetriableError + class OpenTimeout < Timeout::Error; end class BufferedIO #:nodoc: internal use only Index: lib/net/smtp.rb =================================================================== --- lib/net/smtp.rb (revision 34842) +++ lib/net/smtp.rb (revision 34843) @@ -546,7 +546,9 @@ check_auth_method(authtype || DEFAULT_AUTH_TYPE) check_auth_args user, secret end - s = timeout(@open_timeout) { tcp_socket(@address, @port) } + s = Timeout.timeout(@open_timeout, Net::OpenTimeout) do + tcp_socket(@address, @port) + end logging "Connection opened: #{@address}:#{@port}" @socket = new_internet_message_io(tls? ? tlsconnect(s) : s) check_response critical { recv_response() } Index: lib/net/telnet.rb =================================================================== --- lib/net/telnet.rb (revision 34842) +++ lib/net/telnet.rb (revision 34843) @@ -9,8 +9,7 @@ # For documentation, see Net::Telnet. # -require "socket" -require "timeout" +require "net/protocol" require "English" module Net @@ -347,12 +346,12 @@ if @options["Timeout"] == false @sock = TCPSocket.open(@options["Host"], @options["Port"]) else - timeout(@options["Timeout"]) do + Timeout.timeout(@options["Timeout"], Net::OpenTimeout) do @sock = TCPSocket.open(@options["Host"], @options["Port"]) end end - rescue TimeoutError - raise TimeoutError, "timed out while opening a connection to the host" + rescue Net::OpenTimeout + raise Net::OpenTimeout, "timed out while opening a connection to the host" rescue @log.write($ERROR_INFO.to_s + "\n") if @options.has_key?("Output_log") @dumplog.log_dump('#', $ERROR_INFO.to_s + "\n") if @options.has_key?("Dump_log") @@ -508,7 +507,7 @@ # into a regular expression. Used only if Match and # Prompt are not specified. # Timeout:: the number of seconds to wait for data from the host - # before raising a TimeoutError. If set to false, + # before raising a Timeout::Error. If set to false, # no timeout will occur. If not specified, the # Timeout option value specified when this instance # was created will be used, or, failing that, the Index: test/net/http/test_https.rb =================================================================== --- test/net/http/test_https.rb (revision 34842) +++ test/net/http/test_https.rb (revision 34843) @@ -119,7 +119,7 @@ conn.open_timeout = 0.01 th = Thread.new do - assert_raise(Net::HTTP::OpenTimeout) { + assert_raise(Net::OpenTimeout) { conn.get('/') } end -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/