FS-9931: [mod_sofia] don't send display updates to endpoints who don't have UPDATE in their Allow header

This commit is contained in:
Mike Jerris 2017-01-10 15:39:02 -06:00
parent 14a8cde321
commit 20b22978bd
2 changed files with 10 additions and 2 deletions

View File

@ -1802,10 +1802,15 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi
if (!zstr(name) && strcmp(name, "_undef_")) {
char message[256] = "";
const char *ua = switch_channel_get_variable(tech_pvt->channel, "sip_user_agent");
const char *allow = switch_channel_get_variable(tech_pvt->channel, "sip_allow");
switch_event_t *event;
int update_allowed = 0;
check_decode(name, tech_pvt->session);
if (allow) {
update_allowed = !!switch_stristr("UPDATE", allow);
}
if (zstr(number)) {
number = tech_pvt->caller_profile->destination_number;
@ -1868,7 +1873,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi
nua_info(tech_pvt->nh, SIPTAG_CONTENT_TYPE_STR("message/sipfrag"),
TAG_IF(!zstr(tech_pvt->user_via), SIPTAG_VIA_STR(tech_pvt->user_via)), SIPTAG_PAYLOAD_STR(message), TAG_END());
} else if ((ua && (switch_stristr("polycom", ua)))) {
} else if (update_allowed && ua && switch_stristr("polycom", ua)) {
if ( switch_stristr("UA/4", ua) ) {
snprintf(message, sizeof(message), "P-Asserted-Identity: \"%s\" <sip:%s@%s>", name, number, tech_pvt->profile->sipip);
} else {
@ -1882,7 +1887,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi
TAG_IF(!zstr(tech_pvt->route_uri), NUTAG_PROXY(tech_pvt->route_uri)),
TAG_IF(!zstr_buf(message), SIPTAG_HEADER_STR(message)),
TAG_IF(!zstr(tech_pvt->user_via), SIPTAG_VIA_STR(tech_pvt->user_via)), TAG_END());
} else if (ua && ((switch_stristr("aastra", ua) && !switch_stristr("Intelligate", ua)) ||
} else if (update_allowed && ua && ((switch_stristr("aastra", ua) && !switch_stristr("Intelligate", ua)) ||
(switch_stristr("cisco/spa50", ua) || switch_stristr("cisco/spa525", ua)) ||
switch_stristr("cisco/spa30", ua) || switch_stristr("Grandstream GXP", ua) ||
switch_stristr("Yealink", ua) || switch_stristr("Mitel", ua) ||

View File

@ -6380,6 +6380,8 @@ static void sofia_handle_sip_r_invite(switch_core_session_t *session, int status
switch_channel_set_variable(channel, "sip_user_agent", sip->sip_server->g_string);
}
sofia_add_invite_header_to_chanvars(channel, nh, sip->sip_allow, "sip_allow");
sofia_update_callee_id(session, profile, sip, SWITCH_FALSE);
if (sofia_test_media_flag(tech_pvt->profile, SCMF_AUTOFIX_TIMING)) {
@ -10246,6 +10248,7 @@ void sofia_handle_sip_i_invite(switch_core_session_t *session, nua_t *nua, sofia
}
extract_header_vars(profile, sip, session, nh);
sofia_add_invite_header_to_chanvars(channel, nh, sip->sip_allow, "sip_allow");
req_uri = url_set_chanvars(session, sip->sip_request->rq_url, sip_req);
if (sip->sip_request->rq_url->url_user) {