[CONPRO-1172] allocates too much memory
[platform/upstream/iotivity.git] / resource / csdk / connectivity / src / camessagehandler.c
index dcc172e..d9be889 100755 (executable)
@@ -201,7 +201,8 @@ static CAData_t* CAGenerateHandlerData(const CAEndpoint_t *endpoint,
             goto exit;
         }
 
-        if (CADropSecondMessage(&caglobals.ca.requestHistory, endpoint, reqInfo->info.messageId,
+        if ((reqInfo->info.type != CA_MSG_CONFIRM) &&
+            CADropSecondMessage(&caglobals.ca.requestHistory, endpoint, reqInfo->info.messageId,
                                 reqInfo->info.token, reqInfo->info.tokenLength))
         {
             OIC_LOG(INFO, TAG, "Second Request with same Token, Drop it");
@@ -894,6 +895,8 @@ static void CAAdapterStateChangedCallback(CATransportAdapter_t transportType, bo
 
 static bool CAClearQueueEndpointDataContext(void *data, uint32_t size, void *ctx)
 {
+    (void)size;
+
     if (NULL == data || NULL == ctx)
     {
         return false;
@@ -920,7 +923,7 @@ static void CAConnectionStateChangedCallback(const CAEndpoint_t *info, bool isCo
     {
         CAResult_t res = CAQueueingThreadClearContextData(&g_sendThread,
                                                           CAClearQueueEndpointDataContext,
-                                                          info);
+                                                          (void *)info);
         if (CA_STATUS_OK != res)
         {
             OIC_LOG(ERROR, TAG, "Could not clear the send queue");
@@ -1271,6 +1274,8 @@ CAResult_t CAInitializeMessageHandler(CATransportAdapter_t transportType)
 
 static bool CAClearQueueAdapterDataContext(void *data, uint32_t size, void *ctx)
 {
+    (void)size;
+
     if (NULL == data || NULL == ctx)
     {
         return false;
@@ -1300,10 +1305,13 @@ void CAClearMessageHandler(CATransportAdapter_t transportType)
         OIC_LOG_V(ERROR, TAG, "Clear send data failed[%d]", res);
     }
 
-    res = CARetransmissionClearAdapterData(&g_retransmissionContext, transportType);
-    if (res != CA_STATUS_OK)
+    if (transportType & DEFAULT_RETRANSMISSION_TYPE)
     {
-        OIC_LOG_V(ERROR, TAG, "Clear retransmission data failed[%d]", res);
+        res = CARetransmissionClearAdapterData(&g_retransmissionContext, transportType);
+        if (res != CA_STATUS_OK)
+        {
+            OIC_LOG_V(ERROR, TAG, "Clear retransmission data failed[%d]", res);
+        }
     }
 }
 
@@ -1678,15 +1686,15 @@ static void CALogPDUInfo(const CAData_t *data, const coap_pdu_t *pdu)
     }
 
     size_t payloadLen = (pdu->data) ? (unsigned char *) pdu->hdr + pdu->length - pdu->data : 0;
-    OIC_LOG_V(INFO, ANALYZER_TAG, "CoAP Message Full Size = [%lu]", pdu->length);
+    OIC_LOG_V(INFO, ANALYZER_TAG, "CoAP Message Full Size = [%u]", pdu->length);
     OIC_LOG(INFO, ANALYZER_TAG, "CoAP Header (+ 0xFF)");
     OIC_LOG_BUFFER(INFO, ANALYZER_TAG,  (const uint8_t *) pdu->transport_hdr,
                    pdu->length - payloadLen);
-    OIC_LOG_V(INFO, ANALYZER_TAG, "CoAP Header size = [%lu]", pdu->length - payloadLen);
+    OIC_LOG_V(INFO, ANALYZER_TAG, "CoAP Header size = [%" PRIuPTR "]", (size_t) pdu->length - payloadLen);
 
     OIC_LOG_V(INFO, ANALYZER_TAG, "CoAP Payload");
     OIC_LOG_BUFFER(INFO_PRIVATE, ANALYZER_TAG, pdu->data, payloadLen);
-    OIC_LOG_V(INFO, ANALYZER_TAG, "CoAP Payload Size = [%lu]", payloadLen);
+    OIC_LOG_V(INFO, ANALYZER_TAG, "CoAP Payload Size = [%" PRIuPTR "]", payloadLen);
     OIC_LOG(INFO, ANALYZER_TAG, "=================================================");
 
     // samsung log
@@ -1727,7 +1735,7 @@ static void CASamsungLogMessage(const CAData_t *data, const coap_pdu_t *pdu)
     if (NULL != data->remoteEndpoint)
     {
         int i = 0;
-        while (NULL != data->remoteEndpoint->addr[i])
+        while (data->remoteEndpoint->addr[i])
         {
             g_headerBuffer[g_headerIndex++] = data->remoteEndpoint->addr[i];
             i++;
@@ -1782,7 +1790,7 @@ static void CASamsungLogMessage(const CAData_t *data, const coap_pdu_t *pdu)
     if (info->resourceUri)
     {
         size_t i = 0;
-        while (NULL != info->resourceUri[i])
+        while (info->resourceUri[i])
         {
             g_headerBuffer[g_headerIndex++] = info->resourceUri[i];
             i++;