in source/src/AppMessageQueue.c [140:179]
STATUS getPendingMsgQByHashVal(PConnectionMsgQ pConnectionMsgQ, UINT64 clientHash, BOOL remove, PPendingMessageQueue* ppPendingMsgQ)
{
    STATUS retStatus = STATUS_SUCCESS;
    PStackQueue pConnections = NULL;
    PPendingMessageQueue pPendingMsgQ = NULL;
    StackQueueIterator iterator;
    UINT64 data;
    BOOL iterate = TRUE;
    CHK((pConnectionMsgQ != NULL) && (ppPendingMsgQ != NULL), STATUS_APP_MSGQ_NULL_ARG);
    pConnections = pConnectionMsgQ->pMsqQueue;
    CHK_STATUS((appQueueGetIterator(pConnections, &iterator)));
    while (iterate && IS_VALID_ITERATOR(iterator)) {
        CHK_STATUS((appQueueIteratorGetItem(iterator, &data)));
        CHK_STATUS((appQueueIteratorNext(&iterator)));
        pPendingMsgQ = (PPendingMessageQueue) data;
        if (clientHash == pPendingMsgQ->hashValue) {
            *ppPendingMsgQ = pPendingMsgQ;
            iterate = FALSE;
            // Check if the item needs to be removed
            if (remove) {
                // This is OK to do as we are terminating the iterator anyway
                CHK_STATUS((appQueueRemoveItem(pConnections, data)));
            }
        }
    }
CleanUp:
    if (ppPendingMsgQ != NULL) {
        *ppPendingMsgQ = pPendingMsgQ;
    }
    return retStatus;
}