Return one error response from RD server. 25/22325/4
authorTodd Malsbary <todd.malsbary@intel.com>
Tue, 5 Sep 2017 18:59:16 +0000 (11:59 -0700)
committerTodd Malsbary <todd.malsbary@intel.com>
Fri, 27 Oct 2017 16:00:59 +0000 (16:00 +0000)
Bug: https://jira.iotivity.org/browse/IOT-2684
Change-Id: I183ad1a588f3646bd0dc3b370c16cf359552f3eb
Signed-off-by: Todd Malsbary <todd.malsbary@intel.com>
resource/csdk/resource-directory/src/rd_server.c

index bce0185..f089ff9 100644 (file)
@@ -188,9 +188,13 @@ static OCEntityHandlerResult handlePublishRequest(const OCEntityHandlerRequest *
     }
 
     // Send Response
-    if (OC_STACK_OK != sendResponse(ehRequest, resPayload, ehResult))
+    if (OC_EH_OK == ehResult)
     {
-        OIC_LOG(ERROR, TAG, "Sending response failed.");
+        if (OC_STACK_OK != sendResponse(ehRequest, resPayload, ehResult))
+        {
+            OIC_LOG(ERROR, TAG, "Sending response failed.");
+            ehResult = OC_EH_ERROR;
+        }
     }
 
     if (OC_EH_OK == ehResult)
@@ -263,6 +267,7 @@ static OCEntityHandlerResult handleDeleteRequest(const OCEntityHandlerRequest *e
         if (!key || !value)
         {
             OIC_LOG_V(ERROR, TAG, "Invalid query parameter!");
+            ehResult = OC_EH_BAD_REQ;
             goto exit;
         }
         else if (0 == strncasecmp(key, OC_RSRVD_DEVICE_ID, sizeof(OC_RSRVD_DEVICE_ID) - 1))
@@ -277,6 +282,7 @@ static OCEntityHandlerResult handleDeleteRequest(const OCEntityHandlerRequest *e
             if (0 == matchedItems)
             {
                 OIC_LOG_V(ERROR, TAG, "Invalid ins query parameter: %s", value);
+                ehResult = OC_EH_BAD_REQ;
                 goto exit;
             }
 
@@ -288,6 +294,7 @@ static OCEntityHandlerResult handleDeleteRequest(const OCEntityHandlerRequest *e
     if (!di && !nIns)
     {
         OIC_LOG_V(ERROR, TAG, "Missing required query parameters!");
+        ehResult = OC_EH_BAD_REQ;
         goto exit;
     }
 
@@ -297,6 +304,15 @@ static OCEntityHandlerResult handleDeleteRequest(const OCEntityHandlerRequest *e
         ehResult = OC_EH_OK;
     }
 
+    if (OC_EH_OK == ehResult)
+    {
+        if (OC_STACK_OK != sendResponse(ehRequest, NULL, ehResult))
+        {
+            OIC_LOG(ERROR, TAG, "Sending response failed.");
+            ehResult = OC_EH_ERROR;
+        }
+    }
+
     if (OC_EH_OK == ehResult)
     {
         OCResourceHandle handle = OCGetResourceHandleAtUri(OC_RSRVD_WELL_KNOWN_URI);
@@ -311,10 +327,6 @@ static OCEntityHandlerResult handleDeleteRequest(const OCEntityHandlerRequest *e
 exit:
     OICFree(ins);
     OICFree(queryDup);
-    if (OC_STACK_OK != sendResponse(ehRequest, NULL, ehResult))
-    {
-        OIC_LOG(ERROR, TAG, "Sending response failed.");
-    }
     return ehResult;
 }