Select with nonblocking connects
Thomas Pfaff
tpfaff@gmx.net
Fri Jul 5 06:20:00 GMT 2002
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.
Thomas
P.S.: Time for a break and to move to a "Biergarten".
On Fri, 5 Jul 2002, Corinna Vinschen wrote:
> On Fri, Jul 05, 2002 at 11:27:22AM +0200, Thomas Pfaff wrote:
> >
> > There was a message in cygwin ml regarding nonblocking connects with
> > select. Will this be fixed to a unix compliant version or should i answer
> > him that he should use the exceptfds to get failed connects signaled ?
>
> We should try to create a Unix compliant behaviour but it doesn't hurt
> to tell him to use exceptfds until that's fixed. So, go ahead.
>
> Do you have an idea how to implement that?
>
> AFAICS, Linux also returns the fd in writefd if the connect hasn't been
> called yet and as long as no listen() has been called on the socket.
> So, probably we could add a flag `dont_use_in_select' to fhandler_socket.
>
> As long as it's 0, the SOCKET isn't used in a call to the Winsock
> select() but it's set in writefd automatically.
>
> The flag is set to 1 if a listen or a connect succeeds. After that,
> it's given to Winsock select() as usual.
>
> What do you think?
>
> 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