diff options
Diffstat (limited to 'ext/socket/init.c')
-rw-r--r-- | ext/socket/init.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/ext/socket/init.c b/ext/socket/init.c index dc6b531bd6..f6cd2bce7b 100644 --- a/ext/socket/init.c +++ b/ext/socket/init.c @@ -364,8 +364,12 @@ wait_connectable(int fd) */ if (ret < 0) break; - if (sockerr == 0) - continue; /* workaround for winsock */ + if (sockerr == 0) { + if (revents & RB_WAITFD_OUT) + break; + else + continue; /* workaround for winsock */ + } /* BSD and Linux use sockerr. */ errno = sockerr; |