int connect(int sk, const struct sockaddr *sa, socklen_t len)
{
struct sockaddr_un sun;
+ int fixup_p = 0;
+ int rc;
if (sa->sa_family == AF_INET) {
PRESERVING_ERRNO({
do_implicit_bind(sk, &sa, &len, &sun);
+ fixup_p = 1;
});
}
- return real_connect(sk, sa, len);
+ rc = real_connect(sk, sa, len);
+ if (rc < 0) {
+ switch (errno) {
+ case ENOENT: errno = ECONNREFUSED; break;
+ }
+ }
+ return rc;
}
ssize_t sendto(int sk, const void *buf, size_t len, int flags,