From e959f6cbeae94622dc70f9cd7eddf3351dfd8a78 Mon Sep 17 00:00:00 2001 From: iedowse Date: Mon, 2 Apr 2001 22:14:13 +0000 Subject: There were a few error cases where the RPC code would return with all signals masked (whoops). Add the missing cleanup code. Reviewed by: Martin Blapp , alfred --- lib/libc/rpc/clnt_dg.c | 4 +++- lib/libc/rpc/clnt_vc.c | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) (limited to 'lib/libc/rpc') diff --git a/lib/libc/rpc/clnt_dg.c b/lib/libc/rpc/clnt_dg.c index 2b07755..3f6cfd4 100644 --- a/lib/libc/rpc/clnt_dg.c +++ b/lib/libc/rpc/clnt_dg.c @@ -681,8 +681,10 @@ clnt_dg_control(cl, request, info) break; case CLSET_SVC_ADDR: /* set to new address */ addr = (struct netbuf *)(void *)info; - if (addr->len < sizeof cu->cu_raddr) + if (addr->len < sizeof cu->cu_raddr) { + release_fd_lock(cu->cu_fd, mask); return (FALSE); + } (void) memcpy(&cu->cu_raddr, addr->buf, addr->len); cu->cu_rlen = addr->len; break; diff --git a/lib/libc/rpc/clnt_vc.c b/lib/libc/rpc/clnt_vc.c index 2a2fce8..df0d83c 100644 --- a/lib/libc/rpc/clnt_vc.c +++ b/lib/libc/rpc/clnt_vc.c @@ -231,12 +231,14 @@ clnt_vc_create(fd, raddr, prog, vers, sendsz, recvsz) rpc_createerr.cf_stat = RPC_SYSTEMERROR; rpc_createerr.cf_error.re_errno = errno; mutex_unlock(&clnt_fd_lock); + thr_sigsetmask(SIG_SETMASK, &(mask), NULL); goto err; } if (_connect(fd, (struct sockaddr *)raddr->buf, raddr->len) < 0){ rpc_createerr.cf_stat = RPC_SYSTEMERROR; rpc_createerr.cf_error.re_errno = errno; mutex_unlock(&clnt_fd_lock); + thr_sigsetmask(SIG_SETMASK, &(mask), NULL); goto err; } } -- cgit v1.1