svace issues fixed
[platform/core/messaging/msg-service.git] / plugin / sms_plugin / SmsPluginCbMsgHandler.cpp
index 48d95ff..7f89671 100755 (executable)
@@ -138,22 +138,27 @@ void SmsPluginCbMsgHandler::handleCbMsg(TapiHandle *handle, TelSmsCbMsg_t *pCbMs
                err = SmsPluginStorage::instance()->checkMessage(&msgInfo);
 
                if (err == MSG_SUCCESS) {
-                       MSG_CB_MSG_S cbOutMsg = {0, };
-
-                       /*cbOutMsg.type = MSG_CB_SMS; */
-                       cbOutMsg.type = msgInfo.msgType.subType;
-                       cbOutMsg.receivedTime = cbMsg->recvTime;
-                       cbOutMsg.serialNum = encodeCbSerialNum(CbMsgPage.pageHeader.serialNum);
-                       cbOutMsg.messageId = cbMsg->msgId;
-                       cbOutMsg.dcs = CbMsgPage.pageHeader.dcs.rawData;
-                       memset (cbOutMsg.cbText, 0x00, sizeof(cbOutMsg.cbText));
-
-                       cbOutMsg.cbTextLen = convertTextToUtf8((unsigned char*)cbOutMsg.cbText, sizeof(cbOutMsg.cbText), cbMsg);
-                       memset(cbOutMsg.language_type, 0x00, sizeof(cbOutMsg.language_type));
-                       memcpy(cbOutMsg.language_type, CbMsgPage.pageHeader.dcs.iso639Lang, 3);
-                       err = SmsPluginEventHandler::instance()->callbackCBMsgIncoming(&cbOutMsg, &msgInfo);
-                       if (err != MSG_SUCCESS)
-                               MSG_WARN("callbackMsgIncoming() Error !! [%d]", err);
+                       bool is_duplicated = SmsPluginStorage::instance()->isDuplicatedCBMsg(&msgInfo);
+                       if (is_duplicated == false) {
+                               MSG_CB_MSG_S cbOutMsg = {0, };
+
+                               /*cbOutMsg.type = MSG_CB_SMS; */
+                               cbOutMsg.type = msgInfo.msgType.subType;
+                               cbOutMsg.receivedTime = cbMsg->recvTime;
+                               cbOutMsg.serialNum = cbMsg->serialNum;
+                               cbOutMsg.messageId = cbMsg->msgId;
+                               cbOutMsg.dcs = CbMsgPage.pageHeader.dcs.rawData;
+                               memset (cbOutMsg.cbText, 0x00, sizeof(cbOutMsg.cbText));
+
+                               cbOutMsg.cbTextLen = convertTextToUtf8((unsigned char*)cbOutMsg.cbText, sizeof(cbOutMsg.cbText), cbMsg);
+                               memset(cbOutMsg.language_type, 0x00, sizeof(cbOutMsg.language_type));
+                               memcpy(cbOutMsg.language_type, CbMsgPage.pageHeader.dcs.iso639Lang, 3);
+                               err = SmsPluginEventHandler::instance()->callbackCBMsgIncoming(&cbOutMsg, &msgInfo);
+                               if (err != MSG_SUCCESS)
+                                       MSG_WARN("callbackMsgIncoming() Error !! [%d]", err);
+                       } else {
+                               MSG_DEBUG("This cb message is duplicated");
+                       }
                } else {
                        MSG_WARN("checkMessage() Error !! [%d]", err);
                }
@@ -676,6 +681,7 @@ void SmsPluginCbMsgHandler::MakeCbMsg(SMS_CBMSG_PAGE_S *CbPage, SMS_CBMSG_S *pCb
        pCbMsg->classType = CbPage->pageHeader.dcs.classType;
        pCbMsg->codingScheme = CbPage->pageHeader.dcs.codingScheme;
        pCbMsg->recvTime = CbPage->pageHeader.recvTime;
+       pCbMsg->serialNum = encodeCbSerialNum(CbPage->pageHeader.serialNum);
 
        cbPageMap::iterator it;
        int offset = 0;
@@ -708,6 +714,7 @@ void SmsPluginCbMsgHandler::MakeCbMsg(SMS_CBMSG_PAGE_S *CbPage, SMS_CBMSG_S *pCb
 void SmsPluginCbMsgHandler::convertCbMsgToMsginfo(SMS_CBMSG_S *pCbMsg, MSG_MESSAGE_INFO_S *pMsgInfo, msg_sim_slot_id_t simIndex)
 {
        pMsgInfo->msgId = (msg_message_id_t)pCbMsg->msgId;
+       pMsgInfo->serialNum = pCbMsg->serialNum;
 
        pMsgInfo->folderId = MSG_CBMSGBOX_ID;