[CONPRO-1398] Adjust server request handling
[platform/upstream/iotivity.git] / resource / csdk / stack / src / oickeepalive.c
index 451d9dc..bd01d08 100755 (executable)
@@ -644,8 +644,13 @@ void OCProcessKeepAlive()
                     {
                         OIC_LOG(DEBUG, TAG, "Client does not receive the response within 1 minutes.");
 
-                        // Send message to disconnect session.
-                        OCSendDisconnectMessage(entry);
+                        /* TCPDisconnectSession should be invoked depending on the result from client callback */
+                        if (OCSendDisconnectMessage(entry) == OC_STACK_CONTINUE)
+                        {
+                            // Set sentPingMsg values with false.
+                            entry->sentPingMsg = false;
+                            entry->handle = NULL;
+                        }
                     }
 #ifdef WITH_PROCESS_EVENT
                     else
@@ -714,7 +719,12 @@ OCStackResult OCSendDisconnectMessage(const KeepAliveEntry_t *entry)
         response.resourceUri = cbNode->requestUri;
         response.result = OC_STACK_TIMEOUT;
 
-        cbNode->callBack(cbNode->context, cbNode->handle, &response);
+        /* TCPDisconnectSession should be invoked depending on the result from client callback */
+        if (cbNode->callBack(cbNode->context, cbNode->handle, &response) == OC_STACK_KEEP_TRANSACTION)
+        {
+            return OC_STACK_CONTINUE;
+        }
+
         FindAndDeleteClientCB(cbNode);
     }