From: Mark Wooding Date: Sat, 26 Dec 2009 12:15:34 +0000 (+0000) Subject: noip.c: Only fiddle with `errno' from `connect' if we faked things. X-Git-Tag: 1.0.5~2 X-Git-Url: https://git.distorted.org.uk/~mdw/preload-hacks/commitdiff_plain/6df6f816f8152954dd3499b7c4048099994a28a7 noip.c: Only fiddle with `errno' from `connect' if we faked things. Otherwise some programs get confused. --- diff --git a/noip.c b/noip.c index 38021db..acb60ef 100644 --- a/noip.c +++ b/noip.c @@ -872,17 +872,22 @@ int connect(int sk, const struct sockaddr *sa, socklen_t len) int fixup_p = 0; int rc; - if (sa->sa_family == AF_INET) { - PRESERVING_ERRNO({ - do_implicit_bind(sk, &sa, &len, &sun); - fixup_p = 1; - }); - } - rc = real_connect(sk, sa, len); - if (rc < 0) { - switch (errno) { - case ENOENT: errno = ECONNREFUSED; break; - } + switch (sa->sa_family) { + case AF_INET: + PRESERVING_ERRNO({ + do_implicit_bind(sk, &sa, &len, &sun); + fixup_p = 1; + }); + rc = real_connect(sk, sa, len); + if (rc < 0) { + switch (errno) { + case ENOENT: errno = ECONNREFUSED; break; + } + } + break; + default: + rc = real_connect(sk, sa, len); + break; } return rc; }