Project

General

Profile

Actions

Bug #5765

closed

[PATCH] modernize Timeout usage in net/{http,pop,smtp,telnet}

Added by normalperson (Eric Wong) over 12 years ago. Updated about 12 years ago.

Status:
Closed
Assignee:
-
Target version:
ruby -v:
ruby 2.0.0dev (2011-12-14 trunk 34045) [x86_64-linux]
Backport:
[ruby-core:41662]

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


Related issues 2 (0 open2 closed)

Related to Ruby master - Feature #6088: Add Net::ReadTimeout to distinguish which operation failedCloseddrbrain (Eric Hodel)02/26/2012Actions
Related to Ruby master - Bug #6001: Retry idempotent HTTP requests for more errorsClosed02/11/2012Actions
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0