From a7316ee86df0fef32b6a3e69ebfd7512a7ed9d92 Mon Sep 17 00:00:00 2001 From: "hyuna0213.jo" Date: Tue, 26 Apr 2016 14:28:23 +0900 Subject: [PATCH] changed queue destroy logic to delete the remained data in CA In case of the receive queue in camessagehandler, we don't start the queue thread because RI supports single thread. accordingly we have to delete the remained data in CAQueueingThreadDestroy(). Change-Id: I18667b97d97ac83dabcb0affb13b4a593fc15a9f Signed-off-by: hyuna0213.jo Reviewed-on: https://gerrit.iotivity.org/gerrit/7921 Tested-by: jenkins-iotivity Reviewed-by: Jon A. Cruz --- resource/csdk/connectivity/src/caqueueingthread.c | 45 ++++++++++++----------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/resource/csdk/connectivity/src/caqueueingthread.c b/resource/csdk/connectivity/src/caqueueingthread.c index 754b1c2..9a6c56a 100644 --- a/resource/csdk/connectivity/src/caqueueingthread.c +++ b/resource/csdk/connectivity/src/caqueueingthread.c @@ -92,28 +92,6 @@ static void CAQueueingThreadBaseRoutine(void *threadValue) OICFree(message); } - // remove all remained list data. - while (u_queue_get_size(thread->dataQueue) > 0) - { - // get data - u_queue_message_t *message = u_queue_get_element(thread->dataQueue); - - // free - if(NULL != message) - { - if (NULL != thread->destroy) - { - thread->destroy(message->msg, message->size); - } - else - { - OICFree(message->msg); - } - - OICFree(message); - } - } - ca_mutex_lock(thread->threadMutex); ca_cond_signal(thread->threadCond); ca_mutex_unlock(thread->threadMutex); @@ -261,6 +239,29 @@ CAResult_t CAQueueingThreadDestroy(CAQueueingThread_t *thread) ca_mutex_free(thread->threadMutex); thread->threadMutex = NULL; ca_cond_free(thread->threadCond); + + // remove all remained list data. + while (u_queue_get_size(thread->dataQueue) > 0) + { + // get data + u_queue_message_t *message = u_queue_get_element(thread->dataQueue); + + // free + if(NULL != message) + { + if (NULL != thread->destroy) + { + thread->destroy(message->msg, message->size); + } + else + { + OICFree(message->msg); + } + + OICFree(message); + } + } + u_queue_delete(thread->dataQueue); return CA_STATUS_OK; -- 2.7.4