aboutsummaryrefslogtreecommitdiff
path: root/sys/rpc
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2009-07-14 22:54:29 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2009-07-14 22:54:29 +0000
commitb35687df1384c17c4373863120d59daec2825a52 (patch)
treea0fd9946a1d3f491996b7e401f7dd0872d11817a /sys/rpc
parentf33a947b56e0667c6e1e3384d00ffb1a5b67060e (diff)
Notes
Diffstat (limited to 'sys/rpc')
-rw-r--r--sys/rpc/clnt_rc.c3
-rw-r--r--sys/rpc/clnt_vc.c5
2 files changed, 5 insertions, 3 deletions
diff --git a/sys/rpc/clnt_rc.c b/sys/rpc/clnt_rc.c
index 5e80d0581d37..217608c4bb36 100644
--- a/sys/rpc/clnt_rc.c
+++ b/sys/rpc/clnt_rc.c
@@ -264,7 +264,8 @@ clnt_reconnect_call(
stat = clnt_reconnect_connect(cl);
if (stat == RPC_SYSTEMERROR) {
error = tsleep(&fake_wchan,
- rc->rc_intr ? PCATCH : 0, "rpccon", hz);
+ rc->rc_intr ? PCATCH | PBDRY : 0, "rpccon",
+ hz);
if (error == EINTR || error == ERESTART)
return (RPC_INTR);
tries++;
diff --git a/sys/rpc/clnt_vc.c b/sys/rpc/clnt_vc.c
index 4e732f253b62..3f15c435c75f 100644
--- a/sys/rpc/clnt_vc.c
+++ b/sys/rpc/clnt_vc.c
@@ -196,7 +196,7 @@ clnt_vc_create(
while ((so->so_state & SS_ISCONNECTING)
&& so->so_error == 0) {
error = msleep(&so->so_timeo, SOCK_MTX(so),
- PSOCK | PCATCH, "connec", 0);
+ PSOCK | PCATCH | PBDRY, "connec", 0);
if (error) {
if (error == EINTR || error == ERESTART)
interrupted = 1;
@@ -477,6 +477,7 @@ call_again:
errp->re_errno = error;
switch (error) {
case EINTR:
+ case ERESTART:
stat = RPC_INTR;
break;
case EWOULDBLOCK:
@@ -709,7 +710,7 @@ clnt_vc_control(CLIENT *cl, u_int request, void *info)
case CLSET_INTERRUPTIBLE:
if (*(int *) info)
- ct->ct_waitflag = PCATCH;
+ ct->ct_waitflag = PCATCH | PBDRY;
else
ct->ct_waitflag = 0;
break;