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);