From: Eric Wong Date: 2011-05-01T14:23:30+09:00 Subject: [ruby-core:35965] Re: [Ruby 1.9 - Bug #4555] [PATCH] ext/socket/init.c: rsock_connect retries on interrupt KOSAKI Motohiro wrote: > > Your patch looks reasonable to me, but maybe some platforms break under it... > > Can you please clarify this? Which platform break and why? Nevermind, see below: > > I was trying to emulate rb_io_wait_writable() logic which calls > > rb_thread_fd_writable() (which wraps select() if there are multiple threads). > > Maybe avoiding select() in all EINTR cases will work, I am under the impression > > a lot of the select()-wrapping calls in Ruby are relics of the old green threading > > and can be removed. > > I missed your point. If anyone set non-blocking flag and call socket#connect, > the connect call in rsock_connect() can return non-blocking related error. We > have to care it even though we only have single thread. Am I missing something? You're correct. I was mistaken and thought rsock_connect() was intended to be retrying and emulate a blocking operation (like IO#write even if O_NONBLOCK is set) -- Eric Wong