non-blocking accept() can hang.
Tue Feb 19 14:46:00 GMT 2013
On Feb 12 10:52, Tanaka Akira wrote:
> 2013/2/8 marco atzeri <firstname.lastname@example.org>:
> > you can also test by yourself
> > http://cygwin.com/snapshots/
> I see. I re-tested after replacing /bin/cygwin1.dll.
> Unfortunately, the program still block.
> (Good news is that ^C is effective.
> I don't need to kill the process using Windows task manager.)
Sorry for the late response, but I'm pretty busy with porting Cygwin to
64 bit right now.
I debugged your example code, and it can't work on Cygwin. The problem
is that accept/connect on AF_LOCAL sockets performs a handshake
operation to make sure that the other side of the socket is a Cygwin
process as well, and to propagate credential information between
client and listener. The way it's implemented right now requires that
both sides of the socket are responsive. That's a safe thing for the
accept call here, but since there's neither a blocking connect, nor a
select or poll call waiting on the connecting side of the socket, nothing
To get this code working, you have to use either AF_INET or AF_INET6
sockets, or you have to start a thread calling select or poll, so
there's an active function call which allows to perform the handshake
from the connecting side.
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Maintainer cygwin AT cygwin DOT com
Problem reports: http://cygwin.com/problems.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
More information about the Cygwin