diff options
author | dfr <dfr@FreeBSD.org> | 2008-09-09 14:15:55 +0000 |
---|---|---|
committer | dfr <dfr@FreeBSD.org> | 2008-09-09 14:15:55 +0000 |
commit | 73a287b49184cc4b7cc4c689ada9fd5cb5ccc884 (patch) | |
tree | c9744cbbd3e4fa39a76ed292d0756664e32e4cbe | |
parent | 626be4984b8725de1d5bfcd3ca1670bff15bf636 (diff) | |
download | FreeBSD-src-73a287b49184cc4b7cc4c689ada9fd5cb5ccc884.zip FreeBSD-src-73a287b49184cc4b7cc4c689ada9fd5cb5ccc884.tar.gz |
Initialise the SVCAUTH field for new transport structures when they are
allocated instead of waiting for the first request. This fixes an issue with
rpcbind's support for PMAPPROC_CALLIT.
Reviewed by: markm
-rw-r--r-- | include/rpc/svc_auth.h | 2 | ||||
-rw-r--r-- | lib/libc/rpc/svc.c | 1 | ||||
-rw-r--r-- | lib/libc/rpc/svc_auth.c | 4 |
3 files changed, 5 insertions, 2 deletions
diff --git a/include/rpc/svc_auth.h b/include/rpc/svc_auth.h index 67df976..41fc82b 100644 --- a/include/rpc/svc_auth.h +++ b/include/rpc/svc_auth.h @@ -46,6 +46,8 @@ * Server side authenticator */ __BEGIN_DECLS +extern struct svc_auth_ops svc_auth_null_ops; + extern enum auth_stat _authenticate(struct svc_req *, struct rpc_msg *); extern int svc_auth_reg(int, enum auth_stat (*)(struct svc_req *, struct rpc_msg *)); diff --git a/lib/libc/rpc/svc.c b/lib/libc/rpc/svc.c index f5654b1..d205121 100644 --- a/lib/libc/rpc/svc.c +++ b/lib/libc/rpc/svc.c @@ -569,6 +569,7 @@ svc_xprt_alloc() ext = mem_alloc(sizeof(SVCXPRT_EXT)); memset(ext, 0, sizeof(SVCXPRT_EXT)); xprt->xp_p3 = ext; + ext->xp_auth.svc_ah_ops = &svc_auth_null_ops; return (xprt); } diff --git a/lib/libc/rpc/svc_auth.c b/lib/libc/rpc/svc_auth.c index 4e27ccd..b3894e6 100644 --- a/lib/libc/rpc/svc_auth.c +++ b/lib/libc/rpc/svc_auth.c @@ -75,7 +75,7 @@ struct authsvc { }; static struct authsvc *Auths = NULL; -static struct svc_auth_ops svc_auth_null_ops; +struct svc_auth_ops svc_auth_null_ops; /* * The call rpc message, msg has been obtained from the wire. The msg contains @@ -162,7 +162,7 @@ svcauth_null_wrap(auth, xdrs, xdr_func, xdr_ptr) return (xdr_func(xdrs, xdr_ptr)); } -static struct svc_auth_ops svc_auth_null_ops = { +struct svc_auth_ops svc_auth_null_ops = { svcauth_null_wrap, svcauth_null_wrap, }; |