diff options
| author | Konstantin Belousov <kib@FreeBSD.org> | 2009-07-14 22:54:29 +0000 |
|---|---|---|
| committer | Konstantin Belousov <kib@FreeBSD.org> | 2009-07-14 22:54:29 +0000 |
| commit | b35687df1384c17c4373863120d59daec2825a52 (patch) | |
| tree | a0fd9946a1d3f491996b7e401f7dd0872d11817a /sys/rpc | |
| parent | f33a947b56e0667c6e1e3384d00ffb1a5b67060e (diff) | |
Notes
Diffstat (limited to 'sys/rpc')
| -rw-r--r-- | sys/rpc/clnt_rc.c | 3 | ||||
| -rw-r--r-- | sys/rpc/clnt_vc.c | 5 |
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; |
