diff options
author | Chuck Lever <chuck.lever@oracle.com> | 2009-07-14 16:21:01 -0400 |
---|---|---|
committer | Steve Dickson <steved@redhat.com> | 2009-07-14 16:21:01 -0400 |
commit | e188c214f487c9783ab3ae3e987d9a98b9298dfb (patch) | |
tree | 938351ca0b898204f5b292a7b8d1a0e3299ab1d5 /support/nfs/getport.c | |
parent | d0280c201a47cce4aadcfa610b8e03865cce5c5e (diff) | |
download | nfs-utils-e188c214f487c9783ab3ae3e987d9a98b9298dfb.tar.gz nfs-utils-e188c214f487c9783ab3ae3e987d9a98b9298dfb.tar.xz nfs-utils-e188c214f487c9783ab3ae3e987d9a98b9298dfb.zip |
getport: RPC_PROGNOTREGISTERED is a permanent error
rpcbind returns RPC_PROGNOTREGISTERED if it knows for certain that an
RPC program is not supported for a given transport. This is a
permanent and authoritative error, so the library's rpcbind query API
should never retry the query -- it will only get the same answer.
A similar change was submitted for libtirpc. Unlike rpcb_getaddr(3t),
mount.nfs's rpcbind client only retries once (with RPCB3PROC_GETADDR),
but an extra TCP socket in this case would leave another port in
TIME_WAIT. It's infrequent enough, but might as well get rid of it.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
Diffstat (limited to 'support/nfs/getport.c')
-rw-r--r-- | support/nfs/getport.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/support/nfs/getport.c b/support/nfs/getport.c index bc0f121..71f02f3 100644 --- a/support/nfs/getport.c +++ b/support/nfs/getport.c @@ -469,7 +469,7 @@ static unsigned short nfs_gp_rpcb_getaddr(CLIENT *client, case RPC_SUCCESS: if ((uaddr == NULL) || (uaddr[0] == '\0')) { rpc_createerr.cf_stat = RPC_PROGNOTREGISTERED; - continue; + return 0; } port = nfs_universal2port(uaddr); |