diff --git a/src/rsrv/camessage.c b/src/rsrv/camessage.c index 09015f667..ba83af1b3 100644 --- a/src/rsrv/camessage.c +++ b/src/rsrv/camessage.c @@ -1992,6 +1992,15 @@ static int clear_channel_reply ( caHdrLargeArray *mp, cas_commit_msg ( client, 0u ); SEND_UNLOCK(client); + /* + * remove from access control list + */ + status = asRemoveClient(&pciu->asClientPVT); + if(status != 0 && status != S_asLib_asNotActive){ + errMessage(status, RECORD_NAME(&pciu->addr)); + return RSRV_ERROR; + } + epicsMutexMustLock ( client->chanListLock ); if ( pciu->state == rsrvCS_inService || pciu->state == rsrvCS_pendConnectResp ) { @@ -2011,15 +2020,6 @@ static int clear_channel_reply ( caHdrLargeArray *mp, } epicsMutexUnlock( client->chanListLock ); - /* - * remove from access control list - */ - status = asRemoveClient(&pciu->asClientPVT); - if(status != 0 && status != S_asLib_asNotActive){ - errMessage(status, RECORD_NAME(&pciu->addr)); - return RSRV_ERROR; - } - LOCK_CLIENTQ; status = bucketRemoveItemUnsignedId (pCaBucket, &pciu->sid); if(status != S_bucket_success){