提交 8dd4c8f9 authored 作者: Anthony Minessale's avatar Anthony Minessale

don't send presence for hangup if you never sent it for early in…

don't send presence for hangup if you never sent it for early in presence_disable_early mode, it causes issues in yealink
上级 434a286b
......@@ -2700,13 +2700,18 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char *
const char *to_user = switch_str_nil(switch_event_get_header(helper->event, "variable_sip_to_user"));
const char *from_user = switch_str_nil(switch_event_get_header(helper->event, "variable_sip_from_user"));
const char *disable_early = switch_str_nil(switch_event_get_header(helper->event, "variable_presence_disable_early"));
const char *answer_epoch = switch_str_nil(switch_event_get_header(helper->event, "variable_answer_epoch"));
int answered = 0;
char *clean_to_user = NULL;
char *clean_from_user = NULL;
int force_status = 0;
char *call_info_state = switch_event_get_header(helper->event, "presence-call-info-state");
int term = 0;
if (answer_epoch) {
answered = atoi(answer_epoch);
}
if (user_agent && switch_stristr("snom", user_agent) && uuid) {
default_dialog = "full" ;
}
......@@ -2845,7 +2850,8 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char *
if ((sofia_test_pflag(profile, PFLAG_PRESENCE_DISABLE_EARLY) || switch_true(disable_early)) &&
(!zstr(call_info_state) && (!strcasecmp(call_info_state, "alterting") || !strcasecmp(call_info_state, "progressing")))) {
((!zstr(astate) && (!strcasecmp(astate, "early") || !strcasecmp(astate, "ringing") || (!strcasecmp(astate, "terminated") && !answered))))) {
switch_safe_free(stream.data);
goto end;
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论