size_t dataSize; /**< Indicates the data size. The unit is byte. */
void *pData; /**< Indicates the message payload information as a body. default character encoding is UTF-8*/
void *pMmsData; /**< Indicates the message payload information as a body. default character encoding is UTF-8*/
+ size_t mmsDataSize;
} MSG_MESSAGE_HIDDEN_S;
/**
msg->dataSize = 0;
msg->pData = NULL;
msg->pMmsData = NULL;
-
+ msg->mmsDataSize = 0;
/* Allocate memory for address list of message */
msg_struct_list_s *addr_list = (msg_struct_list_s *)new msg_struct_list_s;
if (msg->pMmsData) {
delete [] static_cast<char*>(msg->pMmsData);
msg->pMmsData = NULL;
+ msg->mmsDataSize = 0;
}
// Memory Free
pDst->direction = pSrc->direction;
pDst->bPortValid = pSrc->bPortValid;
pDst->dataSize = pSrc->dataSize;
+ pDst->mmsDataSize = pSrc->mmsDataSize;
memcpy(pDst->subject, pSrc->subject, sizeof(pDst->subject));
- if(pSrc->dataSize)
+
+ if(pSrc->pMmsData && pSrc->mmsDataSize)
{
- if(pSrc->pMmsData)
- {
- pDst->pMmsData = new char[pSrc->dataSize + 1];
- memcpy(pDst->pMmsData, pSrc->pMmsData, pSrc->dataSize);
- }
- if(pSrc->pData)
- {
- int data_len = strlen((const char *)pSrc->pData);
- pDst->pData = new char[data_len + 1];
- memset(pDst->pData, 0x00, data_len + 1);
- strncpy((char *)pDst->pData, (const char *)pSrc->pData, data_len);
- }
+ pDst->pMmsData = new char[pSrc->mmsDataSize];
+ memcpy(pDst->pMmsData, pSrc->pMmsData, pSrc->mmsDataSize);
}
+
+ if(pSrc->dataSize && pSrc->pData)
+ {
+ int data_len = strlen((const char *)pSrc->pData);
+ pDst->pData = new char[data_len + 1];
+ memset(pDst->pData, 0x00, data_len + 1);
+ strncpy((char *)pDst->pData, (const char *)pSrc->pData, data_len);
+ }
+
msg_struct_list_s *src_addrlist = pSrc->addr_list;
msg_struct_list_s *dst_addrlist = pDst->addr_list;
dst_addrlist->nCount = src_addrlist->nCount;
convert_to_mmsdata(mms_struct, tmp_mms_data);
- msg_data->pMmsData = _MsgMmsSerializeMessageData(tmp_mms_data, &(msg_data->dataSize));
+ msg_data->pMmsData = _MsgMmsSerializeMessageData(tmp_mms_data, &(msg_data->mmsDataSize));
_MsgMmsReleasePageList(tmp_mms_data);
_MsgMmsReleaseRegionList(tmp_mms_data);
MSG_MESSAGE_HIDDEN_S *reqmsg = (MSG_MESSAGE_HIDDEN_S*)msg_s->data;
- if (reqmsg->dataSize <= 0)
+ if (reqmsg->mmsDataSize <= 0)
{
- MSG_FATAL("MMS data size is invalid");
+ MSG_FATAL("MMS data size is invalid [%d]", reqmsg->mmsDataSize);
return MSG_ERR_INVALID_PARAMETER;
}
reqmsg->subType = MSG_READREPLY_MMS;
reqmsg->dataSize = read_report_datasize;
+ reqmsg->mmsDataSize = read_report_datasize;
reqmsg->pMmsData = read_report_data;
err = msg_submit_req(handle, req_t);
if(pSrc->subType == MSG_READREPLY_MMS) {
memset(pDest->msgData, 0x00, sizeof(pDest->msgData));
- memcpy(pDest->msgData, pSrc->pMmsData, pSrc->dataSize);
+
+ if (pSrc->mmsDataSize < MAX_MSG_DATA_LEN)
+ memcpy(pDest->msgData, pSrc->pMmsData, pSrc->mmsDataSize);
+ else
+ memcpy(pDest->msgData, pSrc->pMmsData, MAX_MSG_DATA_LEN);
+
} else {
// Save Message Data into File
char fileName[MSG_FILENAME_LEN_MAX+1];
strncpy(pFileNameExt,"JAVA", MSG_FILENAME_LEN_MAX);
}
- MSG_DEBUG("Save Message Data into file : size[%d] name[%s]", pDest->dataSize, fileName);
-
- if (MsgWriteIpcFile(fileName, (char*)pSrc->pMmsData, pSrc->dataSize) == false)
+ MSG_DEBUG("Save Message Data into file : size[%d] name[%s]", pSrc->mmsDataSize, fileName);
+ if (MsgWriteIpcFile(fileName, (char*)pSrc->pMmsData, pSrc->mmsDataSize) == false)
THROW(MsgException::FILE_ERROR, "MsgWriteIpcFile error");
memset(pDest->msgData, 0x00, sizeof(pDest->msgData));
// Get Message Data from File
if (pSrc->networkStatus != MSG_NETWORK_RETRIEVE_FAIL) {
- MSG_DEBUG("Get Message Data from file : size[%d] name[%s]\n", pDest->dataSize, pSrc->msgData);
+
if (MsgOpenAndReadFile(pSrc->msgData, &pFileData, &fileSize) == false)
THROW(MsgException::FILE_ERROR, "MsgOpenAndReadFile error");
memset(pDest->pData, 0x00, strlen(pSrc->msgText)+1);
strncpy((char*)pDest->pData, pSrc->msgText, strlen(pSrc->msgText));
}
+ pDest->mmsDataSize = fileSize;
pDest->pMmsData = (void*)new char[fileSize];
memset(pDest->pMmsData, 0x00, fileSize);
memcpy(pDest->pMmsData, pFileData, fileSize);
+ MSG_DEBUG("Get Message Data from file : size[%d] name[%s]", pDest->mmsDataSize, pSrc->msgData);
}
}
} else {
strncpy((char*)pDest->pData, pSrc->msgText, strlen(pSrc->msgText));
}
+ pDest->mmsDataSize = pDest->dataSize;
pDest->pMmsData = (void*)new char[pDest->dataSize];
memset(pDest->pMmsData, 0x00, pDest->dataSize);
memcpy(pDest->pMmsData, pSrc->msgData, pDest->dataSize);
+ sizeof(MsgDrmType) + MSG_FILEPATH_LEN_MAX
#endif
+ MAX_SMIL_TRANSIN_ID + MAX_SMIL_TRANSOUT_ID +
- 7 * sizeof(int) + 3* sizeof(bool) + sizeof(MmsTextDirection) + sizeof(MmsSmilFontType));
+ 7 * sizeof(int) + 4* sizeof(bool) + sizeof(MmsTextDirection) /*+ sizeof(MmsSmilFontType)*/);
} else {
bufsize += (sizeof(MmsSmilMediaType) + MSG_FILENAME_LEN_MAX + 2 * MSG_FILEPATH_LEN_MAX + MSG_MSG_ID_LEN + 1
+ MAX_SMIL_ALT_LEN + MAX_SMIL_REGION_ID