don't send presence for hangup if you never sent it for early in presence_disable_early mode, it causes issues in yealink

This commit is contained in:
Anthony Minessale 2013-04-09 22:32:24 -05:00
parent c9a49b0ff3
commit 0fe47df2d7
1 changed files with 9 additions and 3 deletions

View File

@ -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;
}