X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/preload-hacks/blobdiff_plain/6e1fe695843e716e8e9ab66f56383296883c3a20..7d7cba35a86cfd06ab9e3f86c6805d9bd0c34fca:/noip.c diff --git a/noip.c b/noip.c index fd86cb3..66c6ba5 100644 --- a/noip.c +++ b/noip.c @@ -1002,6 +1002,11 @@ static int fixup_client_socket(int sk, const struct sockaddr **sa_r, socklen_t mylen = sizeof(*sun); const struct sockaddr *sa = *sa_r; + /* If this isn't a Unix-domain socket then there's nothing to do. */ + if (real_getsockname(sk, SA(sun), &mylen) < 0) return (-1); + if (sun->sun_family != AF_UNIX) return (0); + if (mylen < sizeof(*sun)) ((char *)sun)[mylen] = 0; + /* If we're allowed to talk to a real remote endpoint, then fix things up * as necessary and proceed. */ @@ -1010,11 +1015,6 @@ static int fixup_client_socket(int sk, const struct sockaddr **sa_r, return (0); } - /* If this isn't a Unix-domain socket then there's nothing to do. */ - if (real_getsockname(sk, SA(sun), &mylen) < 0) return (-1); - if (sun->sun_family != AF_UNIX) return (0); - if (mylen < sizeof(*sun)) ((char *)sun)[mylen] = 0; - /* Speaking of which, if we don't have a local address, then we should * arrange one now. */