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