diff --git a/libtirpc/src/clnt_vc.c b/libtirpc/src/clnt_vc.c index 124207d..d3a339f 100644 --- a/libtirpc/src/clnt_vc.c +++ b/libtirpc/src/clnt_vc.c @@ -625,8 +625,12 @@ call_again: } if (!xdr_getxiddir(xdrs, &ct->reply_msg)) { if (ct->ct_error.re_status == RPC_SUCCESS) { - release_fd_lock(ct->ct_fd, mask); - continue; +#ifdef NO_CB_4_KRB5P + if (cl->cb_thread != INVALID_HANDLE_VALUE) +#endif + release_fd_lock(ct->ct_fd, mask); + SwitchToThread(); + continue; } goto out; } @@ -656,7 +660,10 @@ call_again: goto out; } ct->use_stored_reply_msg = TRUE; - release_fd_lock(ct->ct_fd, mask); +#ifdef NO_CB_4_KRB5P + if (cl->cb_thread != INVALID_HANDLE_VALUE) +#endif + release_fd_lock(ct->ct_fd, mask); SwitchToThread(); } }