From 47b044d257b47fcbc30e94dcfe5d0a4cc9fda803 Mon Sep 17 00:00:00 2001 From: Jeff Hill Date: Wed, 2 Jul 2003 20:55:31 +0000 Subject: [PATCH] fixed client removal order bug --- src/rsrv/camsgtask.c | 12 ++++++++---- src/rsrv/caservertask.c | 6 ------ 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/rsrv/camsgtask.c b/src/rsrv/camsgtask.c index 786cffa84..dc8988300 100644 --- a/src/rsrv/camsgtask.c +++ b/src/rsrv/camsgtask.c @@ -195,10 +195,6 @@ FAST int sock; NULL); } - LOCK_CLIENTQ; - ellAdd(&clientQ, &client->node); - UNLOCK_CLIENTQ; - client->evuser = (struct event_user *) db_init_events(); if (!client->evuser) { logMsg("CAS: unable to init the event facility\n", @@ -243,6 +239,10 @@ FAST int sock; free_client(client); return ERROR; } + + LOCK_CLIENTQ; + ellAdd(&clientQ, &client->node); + UNLOCK_CLIENTQ; client->recv.cnt = 0ul; while (TRUE) { @@ -355,6 +355,10 @@ FAST int sock; } } + LOCK_CLIENTQ; + ellRemove(&clientQ, &client->node); + UNLOCK_CLIENTQ; + free_client(client); return OK; diff --git a/src/rsrv/caservertask.c b/src/rsrv/caservertask.c index c1b8fa77d..24167eca3 100644 --- a/src/rsrv/caservertask.c +++ b/src/rsrv/caservertask.c @@ -179,12 +179,6 @@ int free_client(struct client *client) return ERROR; } - /* remove it from the list of clients */ - /* list delete returns no status */ - LOCK_CLIENTQ; - ellDelete(&clientQ, &client->node); - UNLOCK_CLIENTQ; - terminate_one_client(client); freeListFree(rsrvClientFreeList, client);