From: Chuck Lever Date: Tue, 14 Jul 2009 20:21:01 +0000 (-0400) Subject: getport: RPC_PROGNOTREGISTERED is a permanent error X-Git-Tag: nfs-utils-1-2-1-rc2~23 X-Git-Url: https://git.decadent.org.uk/gitweb/?a=commitdiff_plain;h=e188c214f487c9783ab3ae3e987d9a98b9298dfb;p=nfs-utils.git 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 Signed-off-by: Steve Dickson --- 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);