From: hyuna0213.jo Date: Tue, 26 Apr 2016 05:28:23 +0000 (+0900) Subject: changed queue destroy logic to delete the remained data in CA X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a7316ee86df0fef32b6a3e69ebfd7512a7ed9d92;p=contrib%2Fiotivity.git 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 --- 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;