summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
502eef0)
Ensure the test socket is always closed before nfs_ca_sockname()
returns. Otherwise it's orphaned.
BugLink: https://bugzilla.linux-nfs.org/show_bug.cgi?id=197
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
.sin6_family = AF_INET6,
.sin6_addr = IN6ADDR_ANY_INIT,
};
.sin6_family = AF_INET6,
.sin6_addr = IN6ADDR_ANY_INIT,
};
sock = socket(sap->sa_family, SOCK_DGRAM, IPPROTO_UDP);
if (sock < 0)
sock = socket(sap->sa_family, SOCK_DGRAM, IPPROTO_UDP);
if (sock < 0)
switch (sap->sa_family) {
case AF_INET:
switch (sap->sa_family) {
case AF_INET:
- if (bind(sock, SAFE_SOCKADDR(&sin), sizeof(sin)) < 0) {
- close(sock);
- return 0;
- }
+ if (bind(sock, SAFE_SOCKADDR(&sin), sizeof(sin)) < 0)
+ goto out;
- if (bind(sock, SAFE_SOCKADDR(&sin6), sizeof(sin6)) < 0) {
- close(sock);
- return 0;
- }
+ if (bind(sock, SAFE_SOCKADDR(&sin6), sizeof(sin6)) < 0)
+ goto out;
break;
default:
errno = EAFNOSUPPORT;
break;
default:
errno = EAFNOSUPPORT;
- if (connect(sock, sap, salen) < 0) {
- close(sock);
- return 0;
- }
+ if (connect(sock, sap, salen) < 0)
+ goto out;
- return !getsockname(sock, buf, buflen);
+ result = !getsockname(sock, buf, buflen);
+
+out:
+ close(sock);
+ return result;