From aa5288f4052f9dea1a815487d1933311df0c1b16 Mon Sep 17 00:00:00 2001 From: mbr Date: Wed, 28 May 2003 09:16:35 +0000 Subject: 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 --- lib/libc/rpc/svc_vc.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'lib/libc') diff --git a/lib/libc/rpc/svc_vc.c b/lib/libc/rpc/svc_vc.c index 90fb29b..313d93f 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; -- cgit v1.1