Fixed RI-CA review integration changes
authorSachin Agrawal <sachin.agrawal@intel.com>
Fri, 20 Mar 2015 20:42:21 +0000 (13:42 -0700)
committerErich Keane <erich.keane@intel.com>
Fri, 20 Mar 2015 20:55:57 +0000 (20:55 +0000)
Updated files for some issues identified in Gerrit Patch 401.

Change-Id: I5b6bfb60e10d9ae4af358e03aaf8c5a4d8854911
Signed-off-by: Sachin Agrawal <sachin.agrawal@intel.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/486
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Doug Hudson <douglas.hudson@intel.com>
Reviewed-by: Erich Keane <erich.keane@intel.com>
resource/csdk/stack/include/internal/ocresourcehandler.h
resource/csdk/stack/include/internal/ocstackinternal.h
resource/csdk/stack/include/ocstack.h
resource/csdk/stack/include/ocstackconfig.h
resource/csdk/stack/src/ocresource.c
resource/csdk/stack/src/ocserverrequest.c
resource/csdk/stack/src/ocstack.c

index 67bae55..3aa4d4f 100644 (file)
@@ -31,6 +31,7 @@
 #define OC_RSRVD_OC                     "oc"
 #define OC_RSRVD_PAYLOAD                "payload"
 #define OC_RSRVD_HREF                   "href"
+#define OC_RSRVD_PROPERTY               "prop"
 #define OC_RSRVD_REPRESENTATION         "rep"
 #define OC_RSRVD_CONTENT_TYPE           "ct"
 #define OC_RSRVD_RESOURCE_TYPE          "rt"
index ef73531..5f0e2b1 100644 (file)
@@ -88,9 +88,7 @@ typedef struct
 
     /** Remote Endpoint address **/
     //////////////////////////////////////////////////////////
-    // TODO: Consider moving these member to CoAP
-    // IP address & port of client registered for observe
-    // TODO: YK bundle this up as endpoint
+    // TODO: bundle this up as endpoint
     CAAddress_t addressInfo;
     /** Connectivity of the endpoint**/
     CAConnectivityType_t connectivityType;
index 98129b3..64974b9 100644 (file)
@@ -49,15 +49,11 @@ extern "C" {
 // Typedefs
 //-----------------------------------------------------------------------------
 
-/** This would need to be modified for specific platforms and specific
- *  technologies
- */
-#define DEV_ADDR_SIZE_MAX (16)
 
 /**
  * Data structure to encapsulate IPv4/IPv6/Contiki/lwIP device addresses
  *
-*/
+ */
 typedef struct OCDevAddr
 {
     uint32_t     size;                    /**< length of the address stored in addr field. */
index 9e14bd3..ad7c3da 100644 (file)
 // This file contains all the variables which can be configured/modified as
 // per platform or specific product usage scenarios.
 
+/** This would need to be updated in future as we move to support IPv6 and other
+ *  technologies.
+ */
+#define DEV_ADDR_SIZE_MAX (16)
 
 /**
  * Maximum length of the response supported by Server for any REST request.
index f022841..582c6e9 100644 (file)
@@ -195,7 +195,7 @@ BuildVirtualResourceResponse(OCResource *resourcePtr, uint8_t filterOn,
     if (resourcePtr)
     {
         encodeRes = 0;
-        if (filterOn == STACK_RES_DISCOVERY_RT_FILTER)
+        if ((filterOn == STACK_RES_DISCOVERY_RT_FILTER) && filterValue)
         {
             resourceTypePtr = resourcePtr->rsrcType;
             while (resourceTypePtr)
@@ -208,7 +208,7 @@ BuildVirtualResourceResponse(OCResource *resourcePtr, uint8_t filterOn,
                 resourceTypePtr = resourceTypePtr->next;
             }
         }
-        else if (filterOn == STACK_RES_DISCOVERY_IF_FILTER)
+        else if ((filterOn == STACK_RES_DISCOVERY_IF_FILTER) && filterValue)
         {
             interfacePtr = resourcePtr->rsrcInterface;
             while (interfacePtr)
@@ -241,7 +241,7 @@ BuildVirtualResourceResponse(OCResource *resourcePtr, uint8_t filterOn,
                                    OC_RSRVD_SERVER_INSTANCE_ID,
                                    cJSON_CreateString(OCGetServerInstanceIDString()));
 
-            cJSON_AddItemToObject (resObj, "prop", propObj = cJSON_CreateObject());
+            cJSON_AddItemToObject (resObj, OC_RSRVD_PROPERTY, propObj = cJSON_CreateObject());
             // Add resource types
             cJSON_AddItemToObject (propObj, OC_RSRVD_RESOURCE_TYPE, rtArray = cJSON_CreateArray());
             resourceTypePtr = resourcePtr->rsrcType;
@@ -313,11 +313,11 @@ OCStackResult BuildVirtualResourceResponseForDevice(uint8_t filterOn, char *filt
     {
         char *jsonStr = NULL;
         uint16_t jsonLen = 0;
-        cJSON *repObj = cJSON_GetObjectItem(savedDeviceInfo, "rep");
+        cJSON *repObj = cJSON_GetObjectItem(savedDeviceInfo, OC_RSRVD_REPRESENTATION);
 
         OC_LOG(INFO, TAG, PCF("Entering BuildVirtualResourceResponseForDevice"));
 
-        if (filterOn == STACK_DEVICE_DISCOVERY_DI_FILTER)
+        if ((filterOn == STACK_DEVICE_DISCOVERY_DI_FILTER) && filterValue)
         {
             if((cJSON_GetObjectItem(repObj,OC_RSRVD_DEVICE_ID) != NULL) &&
                     strcmp(cJSON_GetObjectItem(repObj,OC_RSRVD_DEVICE_ID)->valuestring, filterValue)
@@ -326,7 +326,7 @@ OCStackResult BuildVirtualResourceResponseForDevice(uint8_t filterOn, char *filt
                 ret = OC_STACK_OK;
             }
         }
-        else if (filterOn == STACK_DEVICE_DISCOVERY_DN_FILTER)
+        else if ((filterOn == STACK_DEVICE_DISCOVERY_DN_FILTER) && filterValue)
         {
             if((cJSON_GetObjectItem(repObj,OC_RSRVD_DEVICE_NAME) != NULL) &&
                     strcmp(cJSON_GetObjectItem(repObj,OC_RSRVD_DEVICE_NAME)->valuestring,
index 8abdf51..56ab124 100644 (file)
@@ -103,7 +103,8 @@ OCStackResult AddServerRequest (OCServerRequest ** request, uint16_t coapID,
     //Note: OCServerRequest includes 1 byte for the JSON Payload.  payloadSize is calculated
     //as the required length of the string, so this will result in enough room for the
     //null terminator as well.
-    serverRequest = (OCServerRequest *) OCCalloc(1, sizeof(OCServerRequest) + reqTotalSize - 1);
+    serverRequest = (OCServerRequest *) OCCalloc(1, sizeof(OCServerRequest) +
+        (reqTotalSize ? reqTotalSize : 1) - 1);
     VERIFY_NON_NULL(serverRequest);
 
     serverRequest->coapID = coapID;
@@ -130,7 +131,7 @@ OCStackResult AddServerRequest (OCServerRequest ** request, uint16_t coapID,
         memcpy(serverRequest->rcvdVendorSpecificHeaderOptions, rcvdVendorSpecificHeaderOptions,
             MAX_HEADER_OPTIONS * sizeof(OCHeaderOption));
     }
-    if(reqJSONPayload)
+    if(reqJSONPayload && reqTotalSize)
     {
         // destination is at least 1 greater than the source, so a NULL always exists in the
         // last character
@@ -300,7 +301,7 @@ OCStackResult HandleSingleResponse(OCEntityHandlerResponse * ehResponse)
     responseEndpoint.resourceUri      = (CAURI_t) serverRequest->resourceUrl;
     responseEndpoint.addressInfo      = serverRequest->addressInfo;
     responseEndpoint.connectivityType = serverRequest->connectivityType;
-    responseEndpoint.isSecured        =  serverRequest->secured;
+    responseEndpoint.isSecured        = serverRequest->secured;
 
     // Copy the info
     switch (ehResponse->ehResult)
index ee80d1d..7f7079c 100644 (file)
@@ -1948,7 +1948,7 @@ OCStackResult OCCreateResource(OCResourceHandle *handle,
         // repeated URLs, which are not allowed.  If a repeat is found, exit with an error
         while (pointer)
         {
-            if (strcmp(uri, pointer->uri) == 0)
+            if (strncmp(uri, pointer->uri, MAX_URI_LENGTH) == 0)
             {
                 OC_LOG(ERROR, TAG, PCF("URI already in use"));
                 return OC_STACK_INVALID_PARAM;