FS-3794 this bug haunts me

This commit is contained in:
Anthony Minessale 2012-02-02 20:41:15 -06:00
parent d79d15d43a
commit 7f5b8fba55
1 changed files with 17 additions and 8 deletions

View File

@ -864,10 +864,12 @@ static void actual_sofia_presence_event_handler(switch_event_t *event)
char *call_id = switch_event_get_header(event, "call-id"); char *call_id = switch_event_get_header(event, "call-id");
char *presence_source = switch_event_get_header(event, "presence-source"); char *presence_source = switch_event_get_header(event, "presence-source");
char *call_info_state = switch_event_get_header(event, "presence-call-info-state"); char *call_info_state = switch_event_get_header(event, "presence-call-info-state");
const char *uuid = switch_event_get_header(event, "unique-id");
switch_console_callback_match_t *matches; switch_console_callback_match_t *matches;
struct presence_helper helper = { 0 }; struct presence_helper helper = { 0 };
int hup = 0; int hup = 0;
if (!mod_sofia_globals.running) { if (!mod_sofia_globals.running) {
return; return;
} }
@ -1052,9 +1054,7 @@ static void actual_sofia_presence_event_handler(switch_event_t *event)
continue; continue;
} }
if (call_info) { if (call_info) {
const char *uuid = switch_event_get_header(event, "unique-id");
#if 0 #if 0
if (mod_sofia_globals.debug_sla > 1) { if (mod_sofia_globals.debug_sla > 1) {
@ -1095,17 +1095,26 @@ static void actual_sofia_presence_event_handler(switch_event_t *event)
rpid, status, mod_sofia_globals.hostname, profile->name, euser, host); rpid, status, mod_sofia_globals.hostname, profile->name, euser, host);
sofia_glue_execute_sql_now(profile, &sql, SWITCH_TRUE); sofia_glue_execute_sql_now(profile, &sql, SWITCH_TRUE);
} }
if (zstr(uuid)) {
sql = switch_mprintf("select state,status,rpid,presence_id from sip_dialogs " sql = switch_mprintf("select state,status,rpid,presence_id from sip_dialogs "
"where call_info_state != 'seized' and hostname='%q' and profile_name='%q' and " "where call_info_state != 'seized' and hostname='%q' and profile_name='%q' and "
"((sip_from_user='%q' and sip_from_host='%q') or presence_id='%q@%q') order by rcd desc", "((sip_from_user='%q' and sip_from_host='%q') or presence_id='%q@%q') order by rcd desc",
mod_sofia_globals.hostname, profile->name, euser, host, euser, host); mod_sofia_globals.hostname, profile->name, euser, host, euser, host);
sofia_glue_execute_sql_callback(profile, profile->ireg_mutex, sql, sofia_presence_dialog_callback, &dh); } else {
sql = switch_mprintf("select state,status,rpid,presence_id from sip_dialogs "
"where uuid != '%q' and call_info_state != 'seized' and hostname='%q' and profile_name='%q' and "
"((sip_from_user='%q' and sip_from_host='%q') or presence_id='%q@%q') order by rcd desc",
uuid, mod_sofia_globals.hostname, profile->name, euser, host, euser, host);
}
if (mod_sofia_globals.debug_presence > 0) { if (mod_sofia_globals.debug_presence > 0) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "CHECK SQL: %s@%s [%s]\nhits: %d\n", euser, host, sql, dh.hits); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "CHECK SQL: %s@%s [%s]\nhits: %d\n", euser, host, sql, dh.hits);
} }
sofia_glue_execute_sql_callback(profile, profile->ireg_mutex, sql, sofia_presence_dialog_callback, &dh);
switch_safe_free(sql); switch_safe_free(sql);