present_sockaddr(sa, 0, buf, sizeof(buf)));
rc = unix_socket_status(sun, 0);
if (rc == STALE) unlink(sun->sun_path);
- if (rc != USED && !(f&ENCF_FRESH)) {
- wildcard_address(sa->sa_family, &addr.sa);
- port_to_sockaddr(&addr.sa, port);
- snprintf(sun->sun_path, sizeof(sun->sun_path), "%s/%s", sockdir,
- present_sockaddr(&addr.sa, 0, buf, sizeof(buf)));
- if (unix_socket_status(sun, 0) == STALE) unlink(sun->sun_path);
- }
+ if (rc == USED || (f&ENCF_FRESH)) goto found;
+ wildcard_address(sa->sa_family, &addr.sa);
+ port_to_sockaddr(&addr.sa, port);
+ snprintf(sun->sun_path, sizeof(sun->sun_path), "%s/%s", sockdir,
+ present_sockaddr(&addr.sa, 0, buf, sizeof(buf)));
+ if (unix_socket_status(sun, 0) == STALE) unlink(sun->sun_path);
} else {
copy_sockaddr(&addr.sa, sa);
for (i = 0; i < 10; i++) {
errno = EADDRINUSE;
D( fprintf(stderr, " -- can't resolve\n"); )
return (-1);
- found:;
}
+found:
D( fprintf(stderr, " -> `%s'\n", sun->sun_path); )
return (0);
}
int getsockname(int sk, struct sockaddr *sa, socklen_t *len)
{
+ char sabuf[1024];
+ socklen_t mylen = sizeof(sabuf);
int rc;
Dpid;
D( fprintf(stderr, "noip(%d): GETSOCKNAME sk=%d", pid, sk); )
- PRESERVING_ERRNO({
- char sabuf[1024];
- socklen_t mylen = sizeof(sabuf);
- rc = real_getsockname(sk, SA(sabuf), &mylen);
- if (rc >= 0) {
- D( fprintf(stderr, " -> converting...\n"); )
- return_fake_name(SA(sabuf), mylen, sa, len);
- D( fprintf(stderr, "noip(%d): ... GETSOCKNAME", pid); )
- }
- });
+ rc = real_getsockname(sk, SA(sabuf), &mylen);
+ if (rc >= 0) {
+ D( fprintf(stderr, " -> converting...\n"); )
+ return_fake_name(SA(sabuf), mylen, sa, len);
+ D( fprintf(stderr, "noip(%d): ... GETSOCKNAME", pid); )
+ }
D( dump_addrresult(rc, sa, *len); )
return (rc);
}
int getpeername(int sk, struct sockaddr *sa, socklen_t *len)
{
+ char sabuf[1024];
+ socklen_t mylen = sizeof(sabuf);
int rc;
Dpid;
D( fprintf(stderr, "noip(%d): GETPEERNAME sk=%d", pid, sk); )
- PRESERVING_ERRNO({
- char sabuf[1024];
- socklen_t mylen = sizeof(sabuf);
- rc = real_getpeername(sk, SA(sabuf), &mylen);
- if (rc >= 0) {
- D( fprintf(stderr, " -> converting...\n"); )
- return_fake_name(SA(sabuf), mylen, sa, len);
- D( fprintf(stderr, "noip(%d): ... GETPEERNAME", pid); )
- }
- });
+ rc = real_getpeername(sk, SA(sabuf), &mylen);
+ if (rc >= 0) {
+ D( fprintf(stderr, " -> converting...\n"); )
+ return_fake_name(SA(sabuf), mylen, sa, len);
+ D( fprintf(stderr, "noip(%d): ... GETPEERNAME", pid); )
+ }
D( dump_addrresult(rc, sa, *len); )
return (0);
}