--- otp_src_R12B-4.orig/erts/emulator/drivers/common/inet_drv.c 2008-09-01 05:51:18.000000000 -0700 +++ otp_src_R12B-4/erts/emulator/drivers/common/inet_drv.c 2008-09-30 10:38:06.000000000 -0700 @@ -7239,19 +7239,18 @@ buf, &len) == NULL) return ctl_error(EINVAL, rbuf, rsize); - sock_select(INETP(desc), FD_CONNECT, 1); code = sock_connect(desc->inet.s, (struct sockaddr*) &desc->inet.remote, len); if ((code == SOCKET_ERROR) && ((sock_errno() == ERRNO_BLOCK) || /* Winsock2 */ (sock_errno() == EINPROGRESS))) { /* Unix & OSE!! */ desc->inet.state = TCP_STATE_CONNECTING; + sock_select(INETP(desc), FD_CONNECT, 1); if (timeout != INET_INFINITY) driver_set_timer(desc->inet.port, timeout); enq_async(INETP(desc), tbuf, INET_REQ_CONNECT); } else if (code == 0) { /* ok we are connected */ - sock_select(INETP(desc), FD_CONNECT, 0); desc->inet.state = TCP_STATE_CONNECTED; if (desc->inet.active) sock_select(INETP(desc), (FD_READ|FD_CLOSE), 1); @@ -7259,7 +7258,6 @@ async_ok(INETP(desc)); } else { - sock_select(INETP(desc), FD_CONNECT, 0); return ctl_error(sock_errno(), rbuf, rsize); } return ctl_reply(INET_REP_OK, tbuf, 2, rbuf, rsize);