2017-10-02 14:20:35

by Steve Dickson

[permalink] [raw]
Subject: [PATCH] rpc.nfsd: Do not fail when all address families are not support.

Commit 2f8a6020 introduce a regression causing rpc.nfsd
to fail when IPv6 is not supported. rpc.nfsd should not
fail when there is at least one bounded socket.

Signed-off-by: Steve Dickson <[email protected]>
---
utils/nfsd/nfssvc.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/utils/nfsd/nfssvc.c b/utils/nfsd/nfssvc.c
index e8609c1..fc36792 100644
--- a/utils/nfsd/nfssvc.c
+++ b/utils/nfsd/nfssvc.c
@@ -112,7 +112,7 @@ static int
nfssvc_setfds(const struct addrinfo *hints, const char *node, const char *port)
{
int fd, on = 1, fac = L_ERROR;
- int sockfd = -1, rc = 0;
+ int sockfd = -1, rc = 0, bounded = 0;
struct addrinfo *addrhead = NULL, *addr;
char *proto, *family;

@@ -233,6 +233,8 @@ nfssvc_setfds(const struct addrinfo *hints, const char *node, const char *port)
rc = errno;
goto error;
}
+ bounded++;
+
close(fd);
close(sockfd);
sockfd = fd = -1;
@@ -245,7 +247,7 @@ error:
close(sockfd);
if (addrhead)
freeaddrinfo(addrhead);
- return rc;
+ return (bounded ? 0 : rc);
}

int
--
2.13.5



2017-10-05 14:56:53

by Steve Dickson

[permalink] [raw]
Subject: Re: [PATCH] rpc.nfsd: Do not fail when all address families are not support.



On 10/02/2017 10:20 AM, Steve Dickson wrote:
> Commit 2f8a6020 introduce a regression causing rpc.nfsd
> to fail when IPv6 is not supported. rpc.nfsd should not
> fail when there is at least one bounded socket.
>
> Signed-off-by: Steve Dickson <[email protected]>
Committed....

steved.
> ---
> utils/nfsd/nfssvc.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/utils/nfsd/nfssvc.c b/utils/nfsd/nfssvc.c
> index e8609c1..fc36792 100644
> --- a/utils/nfsd/nfssvc.c
> +++ b/utils/nfsd/nfssvc.c
> @@ -112,7 +112,7 @@ static int
> nfssvc_setfds(const struct addrinfo *hints, const char *node, const char *port)
> {
> int fd, on = 1, fac = L_ERROR;
> - int sockfd = -1, rc = 0;
> + int sockfd = -1, rc = 0, bounded = 0;
> struct addrinfo *addrhead = NULL, *addr;
> char *proto, *family;
>
> @@ -233,6 +233,8 @@ nfssvc_setfds(const struct addrinfo *hints, const char *node, const char *port)
> rc = errno;
> goto error;
> }
> + bounded++;
> +
> close(fd);
> close(sockfd);
> sockfd = fd = -1;
> @@ -245,7 +247,7 @@ error:
> close(sockfd);
> if (addrhead)
> freeaddrinfo(addrhead);
> - return rc;
> + return (bounded ? 0 : rc);
> }
>
> int
>