Issue #4560 has been reported by Eric Wong.

----------------------------------------
Feature #4560: [PATCH] lib/net/protocol.rb: avoid exceptions in rbuf_fill
http://redmine.ruby-lang.org/issues/4560

Author: Eric Wong
Status: Open
Priority: Low
Assignee: 
Category: lib
Target version: 1.9.x


Blindly hitting IO#read_nonblock() and raising is expensive due
to two factors:

1) method cache being scanned/cleared when the IO::WaitReadable
extended class is GC-ed
2) backtrace generation

This reduces the likelyhood of an IO::WaitReadable exception,
but spurious wakeup can still occur due to bad TCP checksums.

This optimization only applies to non-OpenSSL sockets.  I am
using IO#wait here instead of IO.select() since IO#wait is not
available on OpenSSL sockets.



-- 
http://redmine.ruby-lang.org