static oc_thread g_waitConfirmThreadId;
oc_cond g_condWait;
static InformOxmSelectedCallback_t g_InformOxmSelectedCallback = NULL;
+static bool g_isConfirmResult;
static OicSecOxm_t gOicSecDoxmJustWorks = OIC_JUST_WORKS;
static OicSecDoxm_t gDefaultDoxm =
oc_mutex_lock(g_mutexWait);
oc_cond_wait(g_condWait, g_mutexWait);
oc_cond_free(g_condWait);
+ g_condWait = NULL;
+
+ oc_mutex_unlock(g_mutexWait);
oc_mutex_free(g_mutexWait);
+ g_mutexWait = NULL;
+ g_isConfirmResult = true;
GetAsyncVerifyUserResult(&confirmResult, &confirmState);
if (confirmResult == true)
{
gConfirmState = CONFIRM_STATE_ACCEPTED;
HandleDoxmPostRequest(ehRequest);
+ g_isConfirmResult = false;
return NULL;
}
else
{
gConfirmState = CONFIRM_STATE_DENIED;
HandleDoxmPostRequest(ehRequest);
+ g_isConfirmResult = false;
return NULL;
}
* In case of other transport adapter, duplicate message check is not required.
*/
if (OC_ADAPTER_IP == ehRequest->devAddr.adapter &&
- previousMsgId == ehRequest->messageID)
+ previousMsgId == ehRequest->messageID && g_isConfirmResult == false)
{
isDuplicatedMsg = true;
}
{
oc_thread_detach(g_waitConfirmThreadId);
}
+
+ previousMsgId = ehRequest->messageID;
+
return OC_EH_SLOW;
}
}