diff options
Diffstat (limited to 'ext/socket/tcpserver.c')
-rw-r--r-- | ext/socket/tcpserver.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/ext/socket/tcpserver.c b/ext/socket/tcpserver.c index 1f03642f61..59cd7dd3cc 100644 --- a/ext/socket/tcpserver.c +++ b/ext/socket/tcpserver.c @@ -69,7 +69,7 @@ tcp_accept(VALUE sock) * serv = TCPServer.new(2202) * begin # emulate blocking accept * sock = serv.accept_nonblock - * rescue Errno::EAGAIN, Errno::EWOULDBLOCK, Errno::ECONNABORTED, Errno::EPROTO, Errno::EINTR + * rescue IO::WaitReadable, Errno::EINTR * IO.select([serv]) * retry * end @@ -80,6 +80,10 @@ tcp_accept(VALUE sock) * * TCPServer#accept_nonblock may raise any error corresponding to accept(2) failure, * including Errno::EWOULDBLOCK. + * + * If the exception is Errno::EWOULDBLOCK, Errno::AGAIN, Errno::ECONNABORTED, Errno::EPROTO, + * it is extended by IO::WaitReadable. + * So IO::WaitReadable can be used to rescue the exceptions for retrying accept_nonblock. * * === See * * TCPServer#accept |