⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jmmsjsrhandler.c

📁 MTK手机平台的MMI部分的源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
    {
        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 + -