diff options
author | dfr <dfr@FreeBSD.org> | 2008-11-12 09:38:18 +0000 |
---|---|---|
committer | dfr <dfr@FreeBSD.org> | 2008-11-12 09:38:18 +0000 |
commit | 743ba239e728899a9474cbc905b78a54cdc2484a (patch) | |
tree | 8da9a90ace7c469d07bff9b3a7e72b2fab0276da /sys/nfsserver/nfs_srvkrpc.c | |
parent | dd7b0d73e4869243d38070de6fcbf0c089c90ae9 (diff) | |
download | FreeBSD-src-743ba239e728899a9474cbc905b78a54cdc2484a.zip FreeBSD-src-743ba239e728899a9474cbc905b78a54cdc2484a.tar.gz |
Turn (NFSERR_AUTHERR|code) status values into svcerr_auth(rqst, code) replies
instead of returning a success with a bogus NFS error code.
Diffstat (limited to 'sys/nfsserver/nfs_srvkrpc.c')
-rw-r--r-- | sys/nfsserver/nfs_srvkrpc.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/sys/nfsserver/nfs_srvkrpc.c b/sys/nfsserver/nfs_srvkrpc.c index 9d6ea9f..1cea465 100644 --- a/sys/nfsserver/nfs_srvkrpc.c +++ b/sys/nfsserver/nfs_srvkrpc.c @@ -388,8 +388,13 @@ nfssvc_program(struct svc_req *rqst, SVCXPRT *xprt) svc_freereq(rqst); return; } - if (!svc_sendreply_mbuf(rqst, mrep)) - svcerr_systemerr(rqst); + if (nd.nd_repstat & NFSERR_AUTHERR) { + svcerr_auth(rqst, nd.nd_repstat & ~NFSERR_AUTHERR); + m_freem(mrep); + } else { + if (!svc_sendreply_mbuf(rqst, mrep)) + svcerr_systemerr(rqst); + } svc_freereq(rqst); } |