From ccf01a6d30513a89e6cacbf5ff96426efd1f3c39 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 12 Apr 2012 09:35:02 -0500 Subject: [PATCH] FS-4066 --resolve pidf and its many varieties FTW --- src/mod/endpoints/mod_sofia/sofia_presence.c | 24 +++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index a736a5d64c..e7a2593353 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -3880,16 +3880,24 @@ void sofia_presence_handle_sip_i_publish(nua_t *nua, sofia_profile_t *profile, n open_closed = basic->txt; } - if ((person = switch_xml_child(xml, "dm:person")) && (note = switch_xml_child(person, "dm:note"))) { - note_txt = note->txt; + if ((person = switch_xml_child(xml, "dm:person"))) { + if ((note = switch_xml_child(person, "dm:note"))) { + note_txt = note->txt; + } else if ((note = switch_xml_child(person, "rpid:note"))) { + note_txt = note->txt; + } + if ((act = switch_xml_child(person, "rpid:activities")) && act->child && act->child->name) { + if ((rpid = strchr(act->child->name, ':'))) { + rpid++; + } else { + rpid = act->child->name; + } + } + if (zstr(note_txt)) note_txt = rpid; } - if (person && (act = switch_xml_child(person, "rpid:activities")) && act->child && act->child->name) { - if ((rpid = strchr(act->child->name, ':'))) { - rpid++; - } else { - rpid = act->child->name; - } + if (!strcasecmp(open_closed, "closed")) { + rpid = note_txt = "Unregistered"; } if (sofia_test_pflag(profile, PFLAG_MULTIREG) && !open) {