{
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
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);
}