rx: Correctly test for end of call queue
authorMarc Dionne <marc.c.dionne@gmail.com>
Wed, 18 Jan 2012 01:19:54 +0000 (20:19 -0500)
committerDerrick Brashear <shadow@dementix.org>
Wed, 18 Jan 2012 17:27:44 +0000 (09:27 -0800)
commit6ad3d646e62801cb81a3c9efeac320daa44936e1
treecef8f3ea50421ea3b17df9c91bc86a7a01c46a9d
parent20151a869911a98f0938d74ae6096f3308d7ec01
rx: Correctly test for end of call queue

The intention of this condition is to check if the current call
being considered is the last one on the queue, but the test is
incorrect.  A null next pointer indicates a removed item, not
the end of the queue.

Use the queue_IsLast macro instead to correctly determine that
this is the last item in the queue and that a call has to be
selected, either the current one or a previously seen good choice.

This can cause calls to get permanently stuck in the call queue
and never get assigned to a thread, even when all threads are
idle.

Change-Id: Ie44a45734ab25bd3d2be3635c2e8f05857ca935e
Reviewed-on: http://gerrit.openafs.org/6564
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
src/rx/rx.c