TCPSocket.new causes an infinite loop when interrupted by a signal
The script attached in #9356 goes in an infinite loop on FreeBSD (and other platforms conforming to SUSv3).
Naruse-san asked me to create a separate ticket for backporting.
This bug seems to have been introduced by r31424.
Updated by shugo (Shugo Maeda) over 8 years ago
- Status changed from Open to Closed
- % Done changed from 0 to 100
Applied in changeset r45084.
- ext/socket/init.c (wait_connectable): break if the socket is
writable to avoid infinite loops on FreeBSD and other platforms
which conforms to SUSv3. This problem cannot be reproduced with
loopback interfaces, so it's hard to write test code.
rsock_connect() and wait_connectable() are overly complicated, so
they should be refactored, but I commit this fix as a workaround
for the release of Ruby 1.9.3 scheduled on Feb 24.
[ruby-core:60940] [Bug #9547]