From: Oleksii Beketov
Date: Mon, 11 Mar 2019 16:49:38 +0000 (+0200)
Subject: Fix HandleDoxmPostRequest() to discard duplicate user confirm request
X-Git-Tag: submit/tizen/20190320.085337~4
X-Git-Url: http://review.tizen.org/git/?p=platform%2Fupstream%2Fiotivity.git;a=commitdiff_plain;h=064b3f910c8258d73bf1ee6e7c43f6623d649a79
Fix HandleDoxmPostRequest() to discard duplicate user confirm request
Sync with SES PR #537
https://github.sec.samsung.net/RS7-IOTIVITY/IoTivity/commit/55d327ade19bcc5bf0c61184056918a3525ee36f
(cherry picked from 55d327ade19bcc5bf0c61184056918a3525ee36f)
Change-Id: I6597949a83663afdc464aba05d6477cb265ac6d7
Signed-off-by: Oleksii Beketov
Signed-off-by: DoHyun Pyun
---
diff --git a/resource/csdk/security/src/doxmresource.c b/resource/csdk/security/src/doxmresource.c
index 116bb9a..6d35780 100644
--- a/resource/csdk/security/src/doxmresource.c
+++ b/resource/csdk/security/src/doxmresource.c
@@ -101,6 +101,7 @@ static oc_mutex g_mutexWait;
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 =
@@ -1128,19 +1129,26 @@ void * WaitConfirm(OCEntityHandlerRequest * ehRequest)
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;
}
@@ -1261,7 +1269,7 @@ static OCEntityHandlerResult HandleDoxmPostRequest(OCEntityHandlerRequest * ehRe
* 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;
}
@@ -1640,6 +1648,9 @@ static OCEntityHandlerResult HandleDoxmPostRequest(OCEntityHandlerRequest * ehRe
{
oc_thread_detach(g_waitConfirmThreadId);
}
+
+ previousMsgId = ehRequest->messageID;
+
return OC_EH_SLOW;
}
}