📄 jmmsjsrhandler.c
字号:
{
mmi_jmms_free_mms_pdu_memory(g_jmms_context);
goto END;
}
pMessageSend->pVersion = (JC_INT8*) g_jmms_context->version;
if (wap_get_user_agent_brand() != EM_WAP_USERAGENT_BRAND_SE)
{
pMessageSend->uiExpiryTime = MAX_VALIDITY_PERIOD_VALUE;
}
else
{
pMessageSend->uiExpiryTime = 0;
pMessageSend->uiDate = get_current_utc_time();
}
/* PMT HIMANSHU START 20060425 */
/* For fixing the date & time issue */
if (message->delivery_time > 604800)
{
mmi_jmms_free_mms_pdu_memory(g_jmms_context);
eRet = E_JMMS_GENERAL_ERROR;
goto END;
}
/* PMT HIMANSHU END 20060425 */
pMessageSend->uiDeliveryTime = message->delivery_time;
pMessageSend->eMsgPriority = (message->priority) + 1;
pMessageSend->bDeliveryReport = E_FALSE;
pMessageSend->bReadReport = E_FALSE;
pMessageSend->bHideSender = E_FALSE;
pMessageSend->bExpiryAbs = E_FALSE;
pMessageSend->bDeliveryAbs = E_FALSE;
mmi_jmms_free_addresses_list();
if (buffer != NULL)
{
/* Retrieve Subject */
{
S8 *subject = NULL;
U32 subject_len_ucs2 = 0;
U32 subject_len = *(U32*) buffer;
if (subject_len > 0)
{
subject = (S8*) jdd_MemAlloc(sizeof(S8), subject_len + 1);
if (NULL == subject)
{
mmi_jmms_free_mms_pdu_memory(g_jmms_context);
eRet = JC_ERR_MEMORY_ALLOCATION;
goto END;
}
memcpy(subject, buffer + 8, subject_len);
datalen = subject_len + 8;
subject_len_ucs2 = mmi_charset_utf8_to_ucs2_length_in_bytes((U8*) subject);
g_jmms_context->subject = (S8*) jdd_MemAlloc(sizeof(S8), (subject_len_ucs2 + ENCODING_LENGTH));
if (g_jmms_context->subject == NULL)
{
mmi_jmms_free_mms_pdu_memory(g_jmms_context);
if (subject != NULL)
{
jdd_MemFree(subject);
subject = NULL;
}
eRet = JC_ERR_MEMORY_ALLOCATION;
goto END;
}
mmi_chset_utf8_to_ucs2_string(
(U8*) g_jmms_context->subject,
(subject_len_ucs2 + ENCODING_LENGTH),
(U8*) subject);
pMessageSend->pSubject = (JC_CHAR*) g_jmms_context->subject;
if (subject != NULL)
{
jdd_MemFree(subject);
subject = NULL;
}
}
else
{
datalen = 4;
}
}
/* Retrieve to addresses */
while (message->to_addr_no > 0)
{
U32 address_len = 0;
U32 addrType = 0;
U8 ret = 0;
memcpy(&addrType, (char*)(buffer + datalen), 4);
memcpy(&address_len, (char*)(buffer + datalen + 4), 4);
address = jdd_MemAlloc(sizeof(S8), address_len + 1);
if (NULL == address)
{
mmi_jmms_free_mms_pdu_memory(g_jmms_context);
eRet = JC_ERR_MEMORY_ALLOCATION;
goto END;
}
memcpy(address, buffer + datalen + 8, address_len);
datalen += address_len + 8;
temp_address = jdd_MemAlloc(sizeof(S8), (address_len + 1) * ENCODING_LENGTH);
if (NULL == temp_address)
{
mmi_jmms_free_mms_pdu_memory(g_jmms_context);
eRet = JC_ERR_MEMORY_ALLOCATION;
goto END;
}
AnsiiToUnicodeString((PS8) temp_address, (PS8) address);
if((MMI_FALSE == mmi_jmms_check_address_input_format((U8*)temp_address))
&&(MMI_FALSE == mmi_jmms_check_number_input_format((U8*)temp_address)))
{
mmi_jmms_free_mms_pdu_memory(g_jmms_context);
eRet = JC_ERR_INVALID_PARAMETER;
goto END;
}
g_jmms_context->address_list_flag = E_TO_ADDRESSES;
ret = mmi_jmms_add_address_in_addresse_list(temp_address);
if (ret != 0)
{
mmi_jmms_free_mms_pdu_memory(g_jmms_context);
eRet = JC_ERR_MEMORY_ALLOCATION;
goto END;
}
/* ASSERT(mmcAddrListToMms(addrType, address, &to)); */
if (address != NULL)
{
jdd_MemFree(address);
address = NULL;
}
if (temp_address != NULL)
{
jdd_MemFree(temp_address);
temp_address = NULL;
}
message->to_addr_no--;
}
if (g_jmms_context->to_address_p != NULL)
{
g_jmms_context->to_p = mmi_jmms_get_to_addresses();
if (g_jmms_context->to_p == NULL)
{
mmi_jmms_free_mms_pdu_memory(g_jmms_context);
eRet = JC_ERR_MEMORY_ALLOCATION;
goto END;
}
pMessageSend->pTo = (JC_CHAR*) g_jmms_context->to_p;
}
mmi_jmms_free_addresses_list();
/* Retrieve cc addresses */
while (message->cc_addr_no > 0)
{
U32 address_len = 0;
U32 addrType = 0;
U8 ret = 0;
memcpy(&addrType, (char*)(buffer + datalen), 4);
memcpy(&address_len, (char*)(buffer + datalen + 4), 4);
address = jdd_MemAlloc(sizeof(S8), address_len + 1);
if (NULL == address)
{
mmi_jmms_free_mms_pdu_memory(g_jmms_context);
eRet = JC_ERR_MEMORY_ALLOCATION;
goto END;
}
memcpy(address, buffer + datalen + 8, address_len);
datalen += address_len + 8;
temp_address = jdd_MemAlloc(sizeof(S8), (address_len + 1) * ENCODING_LENGTH);
if (NULL == temp_address)
{
mmi_jmms_free_mms_pdu_memory(g_jmms_context);
eRet = JC_ERR_MEMORY_ALLOCATION;
goto END;
}
AnsiiToUnicodeString((PS8) temp_address, (PS8) address);
if((MMI_FALSE == mmi_jmms_check_address_input_format((U8*)temp_address))
&&(MMI_FALSE == mmi_jmms_check_number_input_format((U8*)temp_address)))
{
mmi_jmms_free_mms_pdu_memory(g_jmms_context);
eRet = JC_ERR_INVALID_PARAMETER;
goto END;
}
g_jmms_context->address_list_flag = E_CC_ADDRESSES;
ret = mmi_jmms_add_address_in_addresse_list(temp_address);
if (ret != 0)
{
mmi_jmms_free_mms_pdu_memory(g_jmms_context);
eRet = JC_ERR_MEMORY_ALLOCATION;
goto END;
}
if (address != NULL)
{
jdd_MemFree(address);
address = NULL;
}
if (temp_address != NULL)
{
jdd_MemFree(temp_address);
temp_address = NULL;
}
message->cc_addr_no--;
}
if (g_jmms_context->cc_address_p != NULL)
{
g_jmms_context->Cc_p = mmi_jmms_get_cc_addresses();
if (g_jmms_context->Cc_p == NULL)
{
mmi_jmms_free_mms_pdu_memory(g_jmms_context);
eRet = JC_ERR_MEMORY_ALLOCATION;
goto END;
}
pMessageSend->pCc = (JC_CHAR*) g_jmms_context->Cc_p;
}
mmi_jmms_free_addresses_list();
/* Retrieve bcc addresses */
while (message->bcc_addr_no > 0)
{
U32 address_len = 0;
U32 addrType = 0;
U8 ret = 0;
memcpy(&addrType, (char*)(buffer + datalen), 4);
memcpy(&address_len, (char*)(buffer + datalen + 4), 4);
address = jdd_MemAlloc(sizeof(S8), address_len + 1);
if (address == NULL)
{
mmi_jmms_free_mms_pdu_memory(g_jmms_context);
eRet = JC_ERR_MEMORY_ALLOCATION;
goto END;
}
memcpy(address, buffer + datalen + 8, address_len);
datalen += address_len + 8;
temp_address = jdd_MemAlloc(sizeof(S8), (address_len + 1) * ENCODING_LENGTH);
if (temp_address == NULL)
{
mmi_jmms_free_mms_pdu_memory(g_jmms_context);
eRet = JC_ERR_MEMORY_ALLOCATION;
goto END;
}
AnsiiToUnicodeString((PS8) temp_address, (PS8) address);
if((MMI_FALSE == mmi_jmms_check_address_input_format((U8*)temp_address))
&&(MMI_FALSE == mmi_jmms_check_number_input_format((U8*)temp_address)))
{
mmi_jmms_free_mms_pdu_memory(g_jmms_context);
eRet = JC_ERR_INVALID_PARAMETER;
goto END;
}
g_jmms_context->address_list_flag = E_BCC_ADDRESSES;
ret = mmi_jmms_add_address_in_addresse_list(temp_address);
if (ret != 0)
{
mmi_jmms_free_mms_pdu_memory(g_jmms_context);
eRet = JC_ERR_MEMORY_ALLOCATION;
goto END;
}
if (address != NULL)
{
jdd_MemFree(address);
address = NULL;
}
if (temp_address != NULL)
{
jdd_MemFree(temp_address);
temp_address = NULL;
}
message->bcc_addr_no--;
}
if (g_jmms_context->bcc_address_p != NULL)
{
g_jmms_context->bcc_p = mmi_jmms_get_bcc_addresses();
if (g_jmms_context->bcc_p == NULL)
{
mmi_jmms_free_mms_pdu_memory(g_jmms_context);
eRet = JC_ERR_MEMORY_ALLOCATION;
goto END;
}
pMessageSend->pBcc = (JC_CHAR*) g_jmms_context->bcc_p;
}
mmi_jmms_free_addresses_list();
} /* /if(buffer!=NULL) */
pMsgHeaders->eMsgType = E_MSG_TYPE_SEND;
pMsgHeaders->pHeaders = pMessageSend;
eRet = mmi_jmms_jdi_set_msg_headers(hMsgHandle, pMsgHeaders);
if (JC_OK != eRet)
{
mmi_jmms_free_mms_pdu_memory(g_jmms_context);
goto END;
}
/* Content type set here */
jdi_MsgGetContentTypeParams(hMsgHandle, &pContentTypeParams);
if (pContentTypeParams == NULL)
{
pContentTypeParams = (MM1_HDR_PARAM*) jdd_MemAlloc(sizeof(MM1_HDR_PARAM), 1);
if (pContentTypeParams == NULL)
{
eRet = JC_ERR_MEMORY_ALLOCATION;
mmi_jmms_free_mms_pdu_memory(g_jmms_context);
goto END;
}
pContentTypeParams->pszName = jdi_UtilsStrdup("Application-ID");
pContentTypeParams->pszValue = jdi_UtilsStrdup((JC_INT8*) (message->app_id));
if(message->reply_app_id_len > 0)
{
pContentTypeParams->pNext = (MM1_HDR_PARAM*) jdd_MemAlloc(sizeof(MM1_HDR_PARAM), 1);
if (pContentTypeParams->pNext == NULL)
{
eRet = JC_ERR_MEMORY_ALLOCATION;
mmi_jmms_free_mms_pdu_memory(g_jmms_context);
while (pContentTypeParams != NULL)
{
node = pContentTypeParams->pNext;
if (pContentTypeParams->pszName != NULL)
{
jdd_MemFree(pContentTypeParams->pszName);
pContentTypeParams->pszName = NULL;
}
if (pContentTypeParams->pszValue != NULL)
{
jdd_MemFree(pContentTypeParams->pszValue);
pContentTypeParams->pszValue = NULL;
}
jdd_MemFree(pContentTypeParams);
pContentTypeParams = node;
}
goto END;
}
pTempContentTypeParams = pContentTypeParams->pNext;
pTempContentTypeParams->pszName = jdi_UtilsStrdup("Reply-To-Application-ID");
pTempContentTypeParams->pszValue = jdi_UtilsStrdup((JC_INT8*) (message->reply_app_id));
}
if(message->start_cnt_id_len > 0)
{
pTempContentTypeParams->pNext = (MM1_HDR_PARAM*) jdd_MemAlloc(sizeof(MM1_HDR_PARAM), 1);
if (pTempContentTypeParams->pNext == NULL)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -