Select with nonblocking connects

Corinna Vinschen vinschen@redhat.com
Fri Jul 5 06:52:00 GMT 2002


On Fri, Jul 05, 2002 at 03:20:19PM +0200, Thomas Pfaff wrote:
> 
> I guess the easiest way is to add a flag in fhandler_socket that is set
> when a connect is in progress. If it is set then add the sock handle to
> exceptfds as well. After select returns check the exceptfds, if the socket
> is signaled set it in writefds too. In UNIX you have to check the SO_ERROR
> sockopt to know if the connect has succeded or failed, but winsock sets is as
> well. Now clear the in_progress flag.
> 
> For listening sockets i see no difference.

Huh?  The problem is the same as long as neither connect() nor listen()
have been called, nor a non-blocking connect() has succeeded.  In either
case, the WinSock select() blocks if the SOCKET is given in write_fd,
while the Linux select() returns with the fd set in write_fd.
The difference is just the SO_ERROR value which is 0 as long as neither
connect() nor listen() have been called, resp EINPROGRESS in case of a
not finshed connect().

I'm not talking about a listening socket.  I'm talking about a socket in
neither listening nor connected state.

> P.S.: Time for a break and to move to a "Biergarten".

Have fun,
Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Developer                                mailto:cygwin@cygwin.com
Red Hat, Inc.



More information about the Cygwin-developers mailing list