Failed non-blocking connect returns incorrect errno on AF_UNIX protocol

Thomas Pfaff tpfaff@gmx.net
Wed Mar 26 07:41:00 GMT 2003


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.
> 
> 
> Thanks.

Corinna,

according to http://www.opengroup.org/onlinepubs/007904975/toc.htm 
EINPROGRESS is not a valid errno if the address family is AF_UNIX.

I would suggest to check for AF_UNIX address family in 
fhandler_socket::connect and make the connect blocking under that condition.

Thomas



More information about the Cygwin-developers mailing list