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