aboutsummaryrefslogtreecommitdiff
path: root/lib/libc/rpc
diff options
context:
space:
mode:
authorMartin Blapp <mbr@FreeBSD.org>2003-05-28 09:16:35 +0000
committerMartin Blapp <mbr@FreeBSD.org>2003-05-28 09:16:35 +0000
commitaee2eba2d12cef307e1ada255736657b826e1961 (patch)
tree700c907f368647f8ad0d13f50d0d8eaa1aabd365 /lib/libc/rpc
parent22e4d31a81e3c2d663c2c6302d3c2b2af3526222 (diff)
downloadsrc-aee2eba2d12cef307e1ada255736657b826e1961.tar.gz
src-aee2eba2d12cef307e1ada255736657b826e1961.zip
If AF_LOCAL is used, we need to use __msgread_withcred() instead of
just read() in non-blocking mode too. The reason is obvious. NetBSD uses a complete different way to get the credentials so this patch only applies to FreeBSD. Reviewed by: rwatson Approved by: re
Notes
Notes: svn path=/head/; revision=115364
Diffstat (limited to 'lib/libc/rpc')
-rw-r--r--lib/libc/rpc/svc_vc.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/libc/rpc/svc_vc.c b/lib/libc/rpc/svc_vc.c
index 90fb29be2a0d..313d93f03afd 100644
--- a/lib/libc/rpc/svc_vc.c
+++ b/lib/libc/rpc/svc_vc.c
@@ -488,7 +488,12 @@ read_vc(xprtp, buf, len)
cfp = (struct cf_conn *)xprt->xp_p1;
if (cfp->nonblock) {
- len = _read(sock, buf, (size_t)len);
+ if (sa->sa_family == AF_LOCAL) {
+ cm = (struct cmessage *)xprt->xp_verf.oa_base;
+ if ((len = __msgread_withcred(sock, buf, len, cm)) > 0)
+ xprt->xp_p2 = &cm->cmcred;
+ } else
+ len = _read(sock, buf, (size_t)len);
if (len < 0) {
if (errno == EAGAIN)
len = 0;