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 <mb@imp.ch>, alfred
This commit is contained in:
parent
2c514a3101
commit
cd51746902
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=75097
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user