This is the mail archive of the cygwin@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Failed non-blocking connect returns incorrect errno on AF_UNIXprotocol


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/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]