Merge "res_pjsip_pidf_eyebeam_body_supplement: Correct status presentation" into 15

changes/06/6106/2
Joshua Colp 9 years ago committed by Gerrit Code Review
commit 537ca762c2

@ -89,7 +89,7 @@ void ast_sip_presence_exten_state_to_str(int state, char **statestring, char **p
case AST_EXTENSION_RINGING:
*statestring = "early";
*local_state = NOTIFY_INUSE;
*pidfstate = "busy";
*pidfstate = "on-the-phone";
*pidfnote = "Ringing";
break;
case (AST_EXTENSION_INUSE | AST_EXTENSION_RINGING):
@ -99,31 +99,31 @@ void ast_sip_presence_exten_state_to_str(int state, char **statestring, char **p
*statestring = "confirmed";
}
*local_state = NOTIFY_INUSE;
*pidfstate = "busy";
*pidfstate = "on-the-phone";
*pidfnote = "Ringing";
break;
case AST_EXTENSION_INUSE:
*statestring = "confirmed";
*local_state = NOTIFY_INUSE;
*pidfstate = "busy";
*pidfstate = "on-the-phone";
*pidfnote = "On the phone";
break;
case AST_EXTENSION_BUSY:
*statestring = "confirmed";
*local_state = NOTIFY_CLOSED;
*pidfstate = "busy";
*local_state = NOTIFY_INUSE;
*pidfstate = "on-the-phone";
*pidfnote = "On the phone";
break;
case AST_EXTENSION_UNAVAILABLE:
*statestring = "terminated";
*local_state = NOTIFY_CLOSED;
*pidfstate = "away";
*pidfstate = "--";
*pidfnote = "Unavailable";
break;
case AST_EXTENSION_ONHOLD:
*statestring = "confirmed";
*local_state = NOTIFY_CLOSED;
*pidfstate = "busy";
*local_state = NOTIFY_INUSE;
*pidfstate = "on-the-phone";
*pidfnote = "On hold";
break;
case AST_EXTENSION_NOT_INUSE:

@ -75,7 +75,7 @@ static int pidf_generate_body_content(void *body, void *data)
pjpidf_tuple_set_contact(state_data->pool, tuple, pj_cstr(&contact, sanitized));
pjpidf_tuple_set_contact_prio(state_data->pool, tuple, pj_cstr(&priority, "1"));
pjpidf_status_set_basic_open(pjpidf_tuple_get_status(tuple),
local_state == NOTIFY_OPEN);
local_state == NOTIFY_OPEN || local_state == NOTIFY_INUSE);
return 0;
}

@ -46,30 +46,28 @@
*/
static void add_eyebeam(pj_pool_t *pool, pj_xml_node *node, const char *pidfstate)
{
static const char *XMLNS_PP = "xmlns:pp";
static const char *XMLNS_PERSON = "urn:ietf:params:xml:ns:pidf:person";
static const char *XMLNS_DM_PREFIX = "xmlns:dm";
static const char *XMLNS_DM = "urn:ietf:params:xml:ns:pidf:data-model";
static const char *XMLNS_ES = "xmlns:es";
static const char *XMLNS_RPID_STATUS = "urn:ietf:params:xml:ns:pidf:rpid:status:rpid-status";
static const char *XMLNS_RPID_PREFIX = "xmlns:rpid";
static const char *XMLNS_RPID = "urn:ietf:params:xml:ns:pidf:rpid";
static const char *XMLNS_EP = "xmlns:ep";
static const char *XMLNS_RPID_PERSON = "urn:ietf:params:xml:ns:pidf:rpid:rpid-person";
pj_xml_node *person = ast_sip_presence_xml_create_node(pool, node, "pp:person");
pj_xml_node *status = ast_sip_presence_xml_create_node(pool, person, "status");
pj_xml_node *person = ast_sip_presence_xml_create_node(pool, node, "dm:person");
if (pidfstate[0] != '-') {
pj_xml_node *activities = ast_sip_presence_xml_create_node(pool, status, "ep:activities");
size_t str_size = sizeof("ep:") + strlen(pidfstate);
pj_xml_node *activities = ast_sip_presence_xml_create_node(pool, person, "rpid:activities");
size_t str_size = sizeof("rpid:") + strlen(pidfstate);
char *act_str = ast_alloca(str_size);
/* Safe */
strcpy(act_str, "rpid:");
strcat(act_str, pidfstate);
activities->content.ptr = pj_pool_alloc(pool, str_size);
activities->content.slen = pj_ansi_snprintf(activities->content.ptr, str_size,
"ep:%s", pidfstate);
ast_sip_presence_xml_create_node(pool, activities, act_str);
}
ast_sip_presence_xml_create_attr(pool, node, XMLNS_PP, XMLNS_PERSON);
ast_sip_presence_xml_create_attr(pool, node, XMLNS_ES, XMLNS_RPID_STATUS);
ast_sip_presence_xml_create_attr(pool, node, XMLNS_EP, XMLNS_RPID_PERSON);
ast_sip_presence_xml_create_attr(pool, node, XMLNS_DM_PREFIX, XMLNS_DM);
ast_sip_presence_xml_create_attr(pool, node, XMLNS_RPID_PREFIX, XMLNS_RPID);
}
static int pidf_supplement_body(void *body, void *data)

Loading…
Cancel
Save