SML_API SmlItemListPtr_t smlAllocItemList() {
    SmlItemListPtr_t p = (SmlItemListPtr_t)smlLibMalloc(sizeof(SmlItemList_t));
    if (p == NULL) return NULL;
    smlLibMemset(p, 0, sizeof(SmlItemList_t));
    p->item = smlAllocItem();
    if (p->item == NULL) {
        smlFreeItemList(p);
        return NULL;
    }
    return p;
}
Example #2
0
SmlReplacePtr_t get_device_info(internals_t * internP)
{
    SmlReplacePtr_t replaceP = NULL;
    SmlItemListPtr_t listP = NULL;

    if (internP == NULL)
    {
        goto error;
    }

    // Mandatory nodes
    if (OMADM_SYNCML_ERROR_SUCCESS != prv_get_to_list(internP, "./DevInfo/Mod", &listP))
        goto error;
    if (OMADM_SYNCML_ERROR_SUCCESS != prv_get_to_list(internP, "./DevInfo/Man", &listP))
        goto error;
    if (OMADM_SYNCML_ERROR_SUCCESS != prv_get_to_list(internP, "./DevInfo/DevId", &listP))
        goto error;
    if (OMADM_SYNCML_ERROR_SUCCESS != prv_get_to_list(internP, "./DevInfo/Lang", &listP))
        goto error;
    if (OMADM_SYNCML_ERROR_SUCCESS != prv_get_to_list(internP, "./DevInfo/DmV", &listP))
        goto error;

    // Optional nodes
    prv_get_tree_to_list(internP, "./DevInfo/Bearer", &listP);
    prv_get_tree_to_list(internP, "./DevInfo/Ext", &listP);

    replaceP = smlAllocReplace();
    if (replaceP)
    {
    	smlFreeItemList(replaceP->itemList);
        replaceP->itemList = listP;
        listP = NULL;
    }

error:
    if (listP) smlFreeItemList(listP);
    return replaceP;
}
SML_API void smlFreeAlert(SmlAlertPtr_t pAlert)
{
	if (! pAlert)
		return;

	smlFreePcdata(pAlert->cmdID);
	smlFreePcdata(pAlert->data);

	smlFreeCredPtr(pAlert->cred);

	smlFreeItemList(pAlert->itemList);

	smlLibFree(pAlert);
}
SML_API void smlFreeGeneric(SmlGenericCmdPtr_t pGenericCmd)
{
	if (! pGenericCmd)
		return;

	smlFreePcdata(pGenericCmd->cmdID);
	smlFreePcdata(pGenericCmd->meta);

	smlFreeCredPtr(pGenericCmd->cred);

	smlFreeItemList(pGenericCmd->itemList);

	smlLibFree(pGenericCmd);
}
SML_API void smlFreeGetPut(SmlPutPtr_t pGetPut)
{
	if (! pGetPut)
		return;

	smlFreePcdata(pGetPut->cmdID);
	smlFreePcdata(pGetPut->meta);
	smlFreePcdata(pGetPut->lang);

	smlFreeCredPtr(pGetPut->cred);

	smlFreeItemList(pGetPut->itemList);

	smlLibFree(pGetPut);
}
SML_API void smlFreeResults(SmlResultsPtr_t pResults)
{
	if (! pResults)
		return;

	smlFreePcdata(pResults->cmdID);
	smlFreePcdata(pResults->msgRef);
	smlFreePcdata(pResults->cmdRef);
	smlFreePcdata(pResults->meta);
	smlFreePcdata(pResults->targetRef);
	smlFreePcdata(pResults->sourceRef);

	smlFreeItemList(pResults->itemList);

	smlLibFree(pResults);
}
SML_API void smlFreeStatus(SmlStatusPtr_t pStatus)
{
	if (! pStatus)
		return;

	smlFreePcdata(pStatus->cmdID);
	smlFreePcdata(pStatus->msgRef);
	smlFreePcdata(pStatus->cmdRef);
	smlFreePcdata(pStatus->cmd);
	smlFreePcdata(pStatus->data);

	smlFreeCredPtr(pStatus->cred);
	smlFreeChalPtr(pStatus->chal);

	smlFreeTargetRefList(pStatus->targetRefList);
	smlFreeSourceRefList(pStatus->sourceRefList);

	smlFreeItemList(pStatus->itemList);

	smlLibFree(pStatus);
}
static void prvCreatePacket1(internals_t * internP)
{
    // this is the beginning of the session
    SmlAlertPtr_t   alertP;

    alertP = smlAllocAlert();
    if (alertP)
    {
        SmlReplacePtr_t replaceP;

        switch(internP->state)
        {
        case STATE_CLIENT_INIT:
            alertP->data = smlString2Pcdata("1201");
            break;
        case STATE_SERVER_INIT:
            alertP->data = smlString2Pcdata("1200");
            break;
        default:
            smlFreeProtoElement((basicElement_t *)alertP);
            return;
        }
        smlFreeItemList(alertP->itemList);
        alertP->itemList = NULL;

        replaceP = get_device_info(internP);
        if (replaceP)
        {
            add_element(internP, (basicElement_t *)alertP);
            add_element(internP, (basicElement_t *)replaceP);
            internP->state = STATE_IN_SESSION;
        }
        else
        {
            smlFreeProtoElement((basicElement_t *)alertP);
        }
    }
}