1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* ext/socket/socket.c (ruby_connect): workaround for the setup of

Cygwin socket(EALREADY).


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1589 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
eban 2001-07-12 06:16:49 +00:00
parent cbc3756009
commit 18efb38b21
2 changed files with 20 additions and 6 deletions

View file

@ -1,3 +1,8 @@
Thu Jul 12 15:11:48 2001 WATANABE Hirofumi <eban@ruby-lang.org>
* ext/socket/socket.c (ruby_connect): workaround for the setup of
Cygwin socket(EALREADY).
Mon Jul 9 16:49:30 2001 WATANABE Hirofumi <eban@ruby-lang.org>
* ext/extmk.rb.in: modify RM macro.

View file

@ -709,6 +709,9 @@ ruby_connect(fd, sockaddr, len, socks)
{
int status;
int mode;
#if defined __CYGWIN__
int wait_in_progress = -1;
#endif
#if defined(HAVE_FCNTL)
mode = fcntl(fd, F_GETFL, 0);
@ -744,17 +747,23 @@ ruby_connect(fd, sockaddr, len, socks)
#ifdef EINPROGRESS
case EINPROGRESS:
#if defined __CYGWIN__
{
struct timeval tv;
tv.tv_sec = 0;
tv.tv_usec = 100000;
rb_thread_wait_for(tv);
}
wait_in_progress = 10;
#endif
#endif
thread_write_select(fd);
continue;
#if defined __CYGWIN__
case EALREADY:
case EINVAL:
if (--wait_in_progress > 0) {
struct timeval tv = {0, 100000};
rb_thread_wait_for(tv);
continue;
}
break;
#endif
#ifdef EISCONN
case EISCONN:
status = 0;