PJ_DEF(pj_status_t) pjsip_pres_parse_xpidf2(char *body, unsigned body_len, pj_pool_t *pool, pjsip_pres_status *pres_status) { pjxpidf_pres *xpidf; xpidf = pjxpidf_parse(pool, body, body_len); if (xpidf == NULL) return PJSIP_SIMPLE_EBADXPIDF; pres_status->info_cnt = 1; pj_strdup(pool, &pres_status->info[0].contact, pjxpidf_get_uri(xpidf)); pres_status->info[0].basic_open = pjxpidf_get_status(xpidf); pres_status->info[0].id.slen = 0; pres_status->info[0].tuple_node = NULL; return PJ_SUCCESS; }
/* * This is a utility function to parse X-PIDF body into PJSIP presence status. */ PJ_DEF(pj_status_t) pjsip_pres_parse_xpidf(pjsip_rx_data *rdata, pj_pool_t *pool, pjsip_pres_status *pres_status) { pjxpidf_pres *xpidf; xpidf = pjxpidf_parse(rdata->tp_info.pool, (char*)rdata->msg_info.msg->body->data, rdata->msg_info.msg->body->len); if (xpidf == NULL) return PJSIP_SIMPLE_EBADXPIDF; pres_status->info_cnt = 1; pj_strdup(pool, &pres_status->info[0].contact, pjxpidf_get_uri(xpidf)); pres_status->info[0].basic_open = pjxpidf_get_status(xpidf); pres_status->info[0].id.slen = 0; return PJ_SUCCESS; }