From: Eric Wong <normalperson@...> Date: 2011-12-15T10:11:37+09:00 Subject: [ruby-core:41662] [ruby-trunk - Bug #5765][Open] [PATCH] modernize Timeout usage in net/{http,pop,smtp,telnet} Issue #5765 has been reported by Eric Wong. ---------------------------------------- Bug #5765: [PATCH] modernize Timeout usage in net/{http,pop,smtp,telnet} http://redmine.ruby-lang.org/issues/5765 Author: Eric Wong Status: Open Priority: Low Assignee: Category: lib Target version: 2.0.0 ruby -v: ruby 2.0.0dev (2011-12-14 trunk 34045) [x86_64-linux] Object#timeout is deprecated, so use Timeout.timeout instead Additionally, rely on raising Timeout::Error instead of temporary Class object. Using a temporary Class object only benefits nested timeouts, but the code paths in net/* do not nest timeouts. Unfortunately, any performance benefit of avoiding temporary Class objects is nullified here because Errno::EAGAIN is extended with IO::WaitReadable or IO::WaitWritable: https://bugs.ruby-lang.org/issues/5138 A better version of this patch would use timeouts via select() when handling DNS lookup and non-blocking connect(). That requires more effort to deal with hostnames that resolve to multiple addresses, so we'll revisit that later. This change is also pullable: git pull git://bogomips.org/ruby modern-timeout -- http://redmine.ruby-lang.org