Interruptable connect

Thomas Pfaff
Thu Jul 4 07:41:00 GMT 2002

On Thu, 4 Jul 2002, Corinna Vinschen wrote:

> On Thu, Jul 04, 2002 at 02:54:44PM +0200, Thomas Pfaff wrote:
> > > Sure, but how will this help ? You can not look ahead if the connect will
> > > be reentered or not. If the program is well written it will or close the
> > > socket afterwards, but should i rely on this ?
> > >
> >
> > To be more precise:
> > I have no problems with unclosed sockets but with a connected socket
> > that shouldn't be connected.
> I see.  The question is if we're able to get around that Winsock'ism.
> Perhaps Winsock2 helps a bit.
> This is just brainstorming, I have no idea if that works:
> When connect is called, create a duplicate of the socket first,
> before actually connecting, using the WSADuplicateSocket call.
> This should give you a structure describing the socket in exactly
> the state before the ::connect call.  Now for the cases:
> - Normal connect, success, erase the duplicate.
> - Normal connect, failure, ditto.
> - Interrupt, close original socket and recreate it from the duplicate
>   using WSASocket.
> Would that work???

Sounds good, but i am not 100 % sure if the duplicated socket is created
in exactly the same state than the original one before WSAEventSelect.
The remarks in WSADuplicateSocket are not clear, especially whether it is
possible to close the original socket first and then create the duplicate.
I will make some tests.


More information about the Cygwin-developers mailing list