*/
#ifdef RX_ENABLE_LOCKS
if (call->state == RX_STATE_ACTIVE) {
+ int old_error = call->error;
rxi_WaitforTQBusy(call);
/* If we entered error state while waiting,
* must call rxi_CallError to permit rxi_ResetCall
* to processed when the tqWaiter count hits zero.
*/
- if (call->error) {
+ if (call->error && call->error != old_error) {
rxi_CallError(call, call->error);
MUTEX_EXIT(&call->lock);
return NULL;
void
rx_KeepAliveOff(struct rx_call *call)
{
+ MUTEX_ENTER(&call->lock);
rxi_KeepAliveOff(call);
+ MUTEX_EXIT(&call->lock);
}
void
rx_KeepAliveOn(struct rx_call *call)
{
+ MUTEX_ENTER(&call->lock);
rxi_KeepAliveOn(call);
+ MUTEX_EXIT(&call->lock);
}
static void