Bug #5765
closed[PATCH] modernize Timeout usage in net/{http,pop,smtp,telnet}
Description
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
Files