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; }
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; }
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; }