summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-x[-rw-r--r--]resource/csdk/connectivity/api/cacommon.h1
-rw-r--r--resource/csdk/connectivity/src/camessagehandler.c14
2 files changed, 8 insertions, 7 deletions
diff --git a/resource/csdk/connectivity/api/cacommon.h b/resource/csdk/connectivity/api/cacommon.h
index f23696800..d1e53f75f 100644..100755
--- a/resource/csdk/connectivity/api/cacommon.h
+++ b/resource/csdk/connectivity/api/cacommon.h
@@ -547,7 +547,6 @@ typedef struct
uint16_t messageId;
char token[CA_MAX_TOKEN_LEN];
uint8_t tokenLength;
- uint32_t ifindex;
} CAHistoryItem_t;
typedef struct
diff --git a/resource/csdk/connectivity/src/camessagehandler.c b/resource/csdk/connectivity/src/camessagehandler.c
index 5a92d153f..da4320d30 100644
--- a/resource/csdk/connectivity/src/camessagehandler.c
+++ b/resource/csdk/connectivity/src/camessagehandler.c
@@ -768,18 +768,20 @@ static bool CADropSecondMessage(CAHistory_t *history, const CAEndpoint_t *ep, ui
{
CAHistoryItem_t *item = &(history->items[i]);
if (id == item->messageId && tokenLength == item->tokenLength
- && ep->ifindex == item->ifindex && memcmp(item->token, token, tokenLength) == 0)
+ && memcmp(item->token, token, tokenLength) == 0)
{
- OIC_LOG_V(INFO, TAG, "IPv%c duplicate message ignored",
- familyFlags & CA_IPV6 ? '6' : '4');
- ret = true;
- break;
+ if ((familyFlags ^ item->flags) == CA_IPFAMILY_MASK)
+ {
+ OIC_LOG_V(INFO, TAG, "IPv%c duplicate message ignored",
+ familyFlags & CA_IPV6 ? '6' : '4');
+ ret = true;
+ break;
+ }
}
}
history->items[history->nextIndex].flags = familyFlags;
history->items[history->nextIndex].messageId = id;
- history->items[history->nextIndex].ifindex = ep->ifindex;
if (token && tokenLength)
{
memcpy(history->items[history->nextIndex].token, token, tokenLength);