In a case where calls to phones with presence enabled as well as presence disabled,
there were cases where the presence enabled calls weren't turning off lights due to the fact that there were calls still up on the phone(though those calls had presence disabled).
This commit is contained in:
parent
c94dd25e4e
commit
00c46450ff
|
@ -644,15 +644,31 @@ static void actual_sofia_presence_mwi_event_handler(switch_event_t *event)
|
|||
static int sofia_presence_dialog_callback(void *pArg, int argc, char **argv, char **columnNames)
|
||||
{
|
||||
struct dialog_helper *helper = (struct dialog_helper *) pArg;
|
||||
switch_core_session_t *session = NULL;
|
||||
switch_channel_t *channel = NULL;
|
||||
int done = 0;
|
||||
|
||||
if (argc >= 4) {
|
||||
|
||||
if (argc == 5 && !zstr(argv[4])) {
|
||||
if (!switch_ivr_uuid_exists(argv[4])) {
|
||||
if ((session = switch_core_session_locate(argv[4]))) {
|
||||
channel = switch_core_session_get_channel(session);
|
||||
|
||||
if (!switch_channel_test_flag(channel, CF_ANSWERED) &&
|
||||
switch_true(switch_channel_get_variable_dup(channel, "presence_disable_early", SWITCH_FALSE, -1))) {
|
||||
done++;
|
||||
}
|
||||
|
||||
switch_core_session_rwunlock(session);
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (done) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (mod_sofia_globals.debug_presence > 0) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "CHECK DIALOG state[%s] status[%s] rpid[%s] pres[%s] uuid[%s]\n",
|
||||
argv[0], argv[1], argv[2], argv[3], argv[4]);
|
||||
|
|
Loading…
Reference in New Issue