replace : iotivity -> iotivity-sec
[platform/upstream/iotivity.git] / resource / csdk / stack / src / oicgroup.c
index 0ece45a..5114f41 100755 (executable)
 #include <string.h>
 
 #include "oicgroup.h"
+#if defined (__TIZENRT__)
+#include <apps/netutils/cJSON.h>
+#else
 #include "cJSON.h"
+#endif
 #include "cbor.h"
 #include "ocpayload.h"
 #include "oic_malloc.h"
@@ -775,6 +779,7 @@ exit:
     OCFREE(desc)
     OCFREE(capa)
     OCFREE(action)
+    OCFREE((*set)->actionsetName)
     OCFREE(*set)
     OCFREE(key)
     OCFREE(value)
@@ -811,7 +816,7 @@ OCStackResult BuildStringFromActionSet(OCActionSet* actionset, char** desc)
         goto exit;
     }
 
-    actionTypeStr = (char *)malloc(1024);
+    actionTypeStr = (char *)OICMalloc(1024);
     if(actionTypeStr != NULL)
     {
         sprintf(actionTypeStr, "%ld %u", actionset->timesteps, actionset->type);
@@ -821,11 +826,11 @@ OCStackResult BuildStringFromActionSet(OCActionSet* actionset, char** desc)
             remaining -= strlen(actionTypeStr);
             strncat(temp, ACTION_DELIMITER, strlen(ACTION_DELIMITER));
             remaining -= strlen(ACTION_DELIMITER);
-            free(actionTypeStr);
+            OICFree(actionTypeStr);
         }
         else
         {
-            free(actionTypeStr);
+            OICFree(actionTypeStr);
             res = OC_STACK_ERROR;
             goto exit;
         }
@@ -926,7 +931,7 @@ OCStackApplicationResult ActionSetCB(void* context, OCDoHandle handle,
         }
 
         // Format the response.  Note this requires some info about the request
-        response.requestHandle = info->ehRequest;
+        response.requestHandle = info->ehRequest->requestId;
         response.resourceHandle = info->collResource;
         response.payload = clientResponse->payload;
         response.numSendVendorSpecificHeaderOptions = 0;
@@ -1273,6 +1278,7 @@ OCStackResult BuildCollectionGroupActionCBORResponse(
                 stackRet = OC_STACK_ERROR;
             }
         }
+        OCRepPayloadDestroy(payload);
     }
     else if (method == OC_REST_POST)
     {
@@ -1317,6 +1323,14 @@ OCStackResult BuildCollectionGroupActionCBORResponse(
                 else
                 {
                     OIC_LOG(INFO, TAG, "Group Action[POST].");
+                    OCServerRequest *request =
+                            GetServerRequestUsingHandle(ehRequest->requestHandle);
+                    if (NULL == request)
+                    {
+                        stackRet = OC_STACK_ERROR;
+                        goto exit;
+                    }
+
                     if (actionset->type == NONE)
                     {
                         OIC_LOG_V(INFO, TAG, "Execute ActionSet : %s",
@@ -1324,13 +1338,11 @@ OCStackResult BuildCollectionGroupActionCBORResponse(
                         unsigned int num = GetNumOfTargetResource(
                                 actionset->head);
 
-                        ((OCServerRequest *) ehRequest->requestHandle)->ehResponseHandler =
-                                HandleAggregateResponse;
-                        ((OCServerRequest *) ehRequest->requestHandle)->numResponses =
-                                num + 1;
+                        request->ehResponseHandler = HandleAggregateResponse;
+                        request->numResponses = num + 1;
+
+                        DoAction(resource, actionset, request);
 
-                        DoAction(resource, actionset,
-                                (OCServerRequest*) ehRequest->requestHandle);
                         stackRet = OC_STACK_OK;
                     }
                     else
@@ -1353,8 +1365,8 @@ OCStackResult BuildCollectionGroupActionCBORResponse(
                             MUTEX_LOCK(&g_scheduledResourceLock);
                             schedule->resource = resource;
                             schedule->actionset = actionset;
-                            schedule->ehRequest =
-                                    (OCServerRequest*) ehRequest->requestHandle;
+                            schedule->ehRequest = request;
+
                             MUTEX_UNLOCK(&g_scheduledResourceLock);
                             if (delay > 0)
                             {
@@ -1449,6 +1461,7 @@ OCStackResult BuildCollectionGroupActionCBORResponse(
                 stackRet = OC_STACK_ERROR;
             }
         }
+        OCRepPayloadDestroy(payload);
     }
 
 exit: