[libtirpc] fix for async rpc + krb5p

don't release the lock if this is krb5p when the receiver finds nothing in
the socket during the recv
This commit is contained in:
Olga Kornievskaia 2011-04-27 15:56:01 -04:00
parent 0d02adba8e
commit a173395b5a

View file

@ -514,7 +514,9 @@ clnt_vc_call(cl, proc, xdr_args, args_ptr, xdr_results, results_ptr, timeout)
#else #else
/* XXX Need Windows signal/event stuff XXX */ /* XXX Need Windows signal/event stuff XXX */
#endif #endif
acquire_fd_lock(ct->ct_fd); acquire_fd_lock(ct->ct_fd);
if (!ct->ct_waitset) { if (!ct->ct_waitset) {
/* If time is not within limits, we ignore it. */ /* If time is not within limits, we ignore it. */
if (time_not_ok(&timeout) == FALSE) if (time_not_ok(&timeout) == FALSE)
@ -577,7 +579,10 @@ call_again:
ct->reply_msg.acpted_rply.ar_results.proc = (xdrproc_t)xdr_void; ct->reply_msg.acpted_rply.ar_results.proc = (xdrproc_t)xdr_void;
if (!ct->use_stored_reply_msg) { if (!ct->use_stored_reply_msg) {
if (!xdrrec_skiprecord(xdrs)) { if (!xdrrec_skiprecord(xdrs)) {
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(); SwitchToThread();
continue; continue;
} }