Ejemplo n.º 1
0
str* pres_agg_nbody_empty(str* pres_user, str* pres_domain)
{
	str* n_body= NULL;

	LM_DBG("creating empty presence for [pres_user]=%.*s [pres_domain]= %.*s\n",
			pres_user->len, pres_user->s, pres_domain->len, pres_domain->s);

	str* body_array = (str*)pkg_malloc(sizeof(str));
	char* body = (char*)pkg_malloc(PRESENCE_EMPTY_BODY_SIZE);
	sprintf(body, PRESENCE_EMPTY_BODY);
	body_array->s = body;
	body_array->len = strlen(body);


	n_body= agregate_xmls(pres_user, pres_domain, &body_array, 1);
	LM_DBG("[n_body]=%p\n", n_body);
	if(n_body) {
		LM_DBG("[*n_body]=%.*s\n",n_body->len, n_body->s);
	}
	if(n_body== NULL)
	{
		LM_ERR("while aggregating body\n");
	}

	pkg_free(body);
	pkg_free(body_array);


	xmlCleanupParser();
	xmlMemoryDump();

	return n_body;
}
Ejemplo n.º 2
0
str* pres_agg_nbody(str* pres_user, str* pres_domain, str** body_array, int n, int off_index)
{
	str* n_body= NULL;
	str* body= NULL;

	if(body_array== NULL && (!force_dummy_presence))
		return NULL;

	if(body_array== NULL)
		return pres_agg_nbody_empty(pres_user, pres_domain);

	if(off_index>= 0)
	{
		body= body_array[off_index];
		body_array[off_index]= offline_nbody(body);

		if(body_array[off_index]== NULL || body_array[off_index]->s== NULL)
		{
			LM_ERR("while constructing offline body\n");
			return NULL;
		}
	}
	LM_DBG("[user]=%.*s  [domain]= %.*s\n",
			pres_user->len, pres_user->s, pres_domain->len, pres_domain->s);
	n_body= agregate_xmls(pres_user, pres_domain, body_array, n);
	if(n_body== NULL && n!= 0)
	{
		LM_ERR("while aggregating body\n");
	}

	if(off_index>= 0)
	{
		xmlFree(body_array[off_index]->s);
		pkg_free(body_array[off_index]);
		body_array[off_index]= body;
	}

	xmlCleanupParser();
    xmlMemoryDump();

	return n_body;
}	
Ejemplo n.º 3
0
str* event_agg_nbody(str* pres_user, str* pres_domain, str** body_array, int n,
		int off_index, offb_f offline_body_fct, char* root_name, char* elem_name)
{
	str* n_body= NULL;
	str* body= NULL;
	int status = OFFB_STATUS_OK;

	if(body_array== NULL && !pidf_manipulation)
		return NULL;

	if(off_index>= 0)
	{
		body= body_array[off_index];
		status = offline_body_fct(body, &n_body);
		if (status != OFFB_STATUS_OK && status != OFFB_STATUS_NO_DIALOG)
		{
			LM_ERR("constructing offline body failed\n"); 
			return NULL;
		}

		body_array[off_index]= n_body;
	}
	LM_DBG("[user]=%.*s  [domain]= %.*s\n",
			pres_user->len, pres_user->s, pres_domain->len, pres_domain->s);
	n_body= agregate_xmls(pres_user, pres_domain, body_array, n, root_name, elem_name);
	if(n_body== NULL && n!= 0)
	{
		LM_ERR("while aggregating body\n");
	}

	if(off_index>= 0 && status == OFFB_STATUS_OK)
	{
		xmlFree(body_array[off_index]->s);
		pkg_free(body_array[off_index]);
		body_array[off_index]= body;
	}

	return n_body;
}