if (CA_STATUS_OK != res)
{
OIC_LOG(ERROR, TAG, "failed to close TLS session");
+ res = CAQueueingThreadClearContextData(g_sendQueueHandle,
+ CAClearQueueEndpointDataContext,
+ endpoint);
+ if (CA_STATUS_OK != res)
+ {
+ OIC_LOG(ERROR, TAG, "failed to clear context data");
+ }
+
return res;
}
#endif
+
res = CASearchAndDeleteTCPSession(endpoint);
if (CA_STATUS_OK != res)
{
OIC_LOG(ERROR, TAG, "failed to close TCP session");
}
+
res = CAQueueingThreadClearContextData(g_sendQueueHandle,
CAClearQueueEndpointDataContext,
endpoint);
+ if (CA_STATUS_OK != res)
+ {
+ OIC_LOG(ERROR, TAG, "failed to clear context data");
+ }
+
return res;
}
{
CAIPStopNetworkMonitor(CA_ADAPTER_TCP);
+ /* Some times send queue thread fails to terminate as it's worker
+ thread gets blocked at TCP session's socket connect operation.
+ So closing sockets which are in connect operation at the time
+ of termination of adapter would save send queue thread from
+ getting blocked. */
+ CATCPCloseInProgressConnections();
+
#ifndef SINGLE_THREAD
+ // Stop send queue thread.
if (g_sendQueueHandle && g_sendQueueHandle->threadMutex)
{
CAQueueingThreadStop(g_sendQueueHandle);
CATCPDeinitializeQueueHandles();
#endif
+ // Close TCP servers and established connections.
CATCPStopServer();
- //Re-initializing the Globals to start them again
+ // Re-initializing the Globals to start them again.
CAInitializeTCPGlobals();
return CA_STATUS_OK;