From 5b60572c5d70ecf87a1e2727e038bf66951acf8d Mon Sep 17 00:00:00 2001 From: Derrick Brashear Date: Wed, 25 Aug 2004 08:13:09 +0000 Subject: [PATCH] STABLE14-attachserverproc-dont-dequeue-if-not-in-queue-take-two-20040818 nWaiting ended up negative, because the dequeuer (GetCall) decremented. (cherry picked from commit 399785acf166dac15123889c28974ff06d6d2de0) --- src/rx/rx.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/rx/rx.c b/src/rx/rx.c index 892c2230a9..2ae09e0ef8 100644 --- a/src/rx/rx.c +++ b/src/rx/rx.c @@ -4009,11 +4009,12 @@ rxi_AttachServerProc(register struct rx_call *call, if (call->flags & RX_CALL_WAIT_PROC) { /* Conservative: I don't think this should happen */ call->flags &= ~RX_CALL_WAIT_PROC; - MUTEX_ENTER(&rx_stats_mutex); - rx_nWaiting--; - MUTEX_EXIT(&rx_stats_mutex); - if (queue_IsOnQueue(call)) - queue_Remove(call); + if (queue_IsOnQueue(call)) { + queue_Remove(call); + MUTEX_ENTER(&rx_stats_mutex); + rx_nWaiting--; + MUTEX_EXIT(&rx_stats_mutex); + } } call->state = RX_STATE_ACTIVE; call->mode = RX_MODE_RECEIVING;