Mail Archives: cygwin/2003/03/26/21:29:50
Corinna Vinschen wrote:
> On Wed, Mar 26, 2003 at 08:48:33AM +0800, David Huang wrote:
>
>>Failed non-blocking connect returns incorrect errno on AF_UNIX protocol.
>>See attached test program.
>>
>>On cygwin:
>>$ ./afunix
>>EINPROGRESS: Operation now in progress
>>
>>On
>>Linux 2.4 (Debian 2.2)
>>Linux 2.4 (Redhat 7.3)
>>Sun Solaris (8):
>>$ ./afunix
>>ECONNREFUSED: Connection refused
>>
>>When i comment following code:
>>// if (fcntl (fd2, F_SETFL, O_NONBLOCK) < 0)
>>// printf ("Failed to set fd non-blocking");
>>The result is
>>ECONNREFUSED: Connection refused
>>
>>It seems an old bug.
>>I don't know whether it effect others address/protocol families.
>
>
> I don't see that it's an error. On non-blocking sockets you have to
> expect that connect() returns before being connected. Just because
> other systems are so quick figuring out that nothing is listening on
> the other side, this doesn't invalidate the EINPROGRESS response under,
> well, slower conditions.
Well, in my test-case, /tmp/.afunix is a dead socket, connect must return
ECONNREFUSED but not EINPROGRESS, is it so?
>
> And, btw., SUSv3 doesn't say a word that EINPROGRESS is not a valid
> response for AF_LOCAL sockets.
Yea, is it a valid response for *alive* AF_LOCAL sockets?
Please consider that, the test code i took from linc-1.0.1 (cleanup.c), because of
that, linc-cleanup-sockets works incorrect.
> Corinna
>
Thanks.
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Bug reporting: http://cygwin.com/bugs.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
- Raw text -