mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-03-14 04:54:49 +00:00
wait there's more
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@8739 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
parent
42de2e4587
commit
55bb344820
@ -413,7 +413,8 @@ static void actual_sofia_presence_event_handler(switch_event_t *event)
|
|||||||
|
|
||||||
if (probe_euser && probe_host && (profile = sofia_glue_find_profile(probe_host))) {
|
if (probe_euser && probe_host && (profile = sofia_glue_find_profile(probe_host))) {
|
||||||
sql = switch_mprintf("select sip_registrations.sip_user, sip_registrations.sip_host, sip_registrations.status, "
|
sql = switch_mprintf("select sip_registrations.sip_user, sip_registrations.sip_host, sip_registrations.status, "
|
||||||
"sip_registrations.rpid,'', sip_dialogs.uuid, sip_dialogs.state, sip_dialogs.direction "
|
"sip_registrations.rpid,'', sip_dialogs.uuid, sip_dialogs.state, sip_dialogs.direction, "
|
||||||
|
"sip_dialogs.sip_to_user, sip_dialogs.sip_to_host "
|
||||||
"from sip_registrations left join sip_dialogs on "
|
"from sip_registrations left join sip_dialogs on "
|
||||||
"(sip_dialogs.sip_from_user = sip_registrations.sip_user) "
|
"(sip_dialogs.sip_from_user = sip_registrations.sip_user) "
|
||||||
"and sip_dialogs.sip_from_host = sip_registrations.sip_host "
|
"and sip_dialogs.sip_from_host = sip_registrations.sip_host "
|
||||||
@ -668,15 +669,22 @@ static int sofia_presence_resub_callback(void *pArg, int argc, char **argv, char
|
|||||||
char *status = argv[2];
|
char *status = argv[2];
|
||||||
char *rpid = argv[3];
|
char *rpid = argv[3];
|
||||||
char *proto = argv[4];
|
char *proto = argv[4];
|
||||||
|
char *to_user = NULL;
|
||||||
char *uuid = NULL;
|
char *uuid = NULL;
|
||||||
char *state = NULL;
|
char *state = NULL;
|
||||||
char *direction = NULL;
|
char *direction = NULL;
|
||||||
switch_event_t *event;
|
switch_event_t *event;
|
||||||
|
char to_buf[128] = "";
|
||||||
|
|
||||||
if (argc > 5) {
|
if (argc > 5) {
|
||||||
uuid = switch_str_nil(argv[5]);
|
uuid = switch_str_nil(argv[5]);
|
||||||
state = switch_str_nil(argv[6]);
|
state = switch_str_nil(argv[6]);
|
||||||
direction = switch_str_nil(argv[7]);
|
direction = switch_str_nil(argv[7]);
|
||||||
|
if (argc > 8) {
|
||||||
|
switch_set_string(to_buf, argv[8]);
|
||||||
|
switch_url_decode(to_buf);
|
||||||
|
to_user = to_buf;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (switch_strlen_zero(proto)) {
|
if (switch_strlen_zero(proto)) {
|
||||||
@ -693,6 +701,10 @@ static int sofia_presence_resub_callback(void *pArg, int argc, char **argv, char
|
|||||||
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "alt_event_type", "dialog");
|
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "alt_event_type", "dialog");
|
||||||
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "event_count", "%d", 0);
|
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "event_count", "%d", 0);
|
||||||
|
|
||||||
|
if (!switch_strlen_zero(to_user)) {
|
||||||
|
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "to-user", "%s", to_user);
|
||||||
|
}
|
||||||
|
|
||||||
if (switch_strlen_zero(state)) {
|
if (switch_strlen_zero(state)) {
|
||||||
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "unique-id", "%s", SOFIA_CHAT_PROTO);
|
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "unique-id", "%s", SOFIA_CHAT_PROTO);
|
||||||
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "channel-state", "%s", "CS_HANGUP");
|
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "channel-state", "%s", "CS_HANGUP");
|
||||||
@ -875,8 +887,8 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char *
|
|||||||
const char *from_user = switch_str_nil(switch_event_get_header(helper->event, "variable_sip_from_user"));
|
const char *from_user = switch_str_nil(switch_event_get_header(helper->event, "variable_sip_from_user"));
|
||||||
const char *clean_to_user = NULL;
|
const char *clean_to_user = NULL;
|
||||||
const char *clean_from_user = NULL;
|
const char *clean_from_user = NULL;
|
||||||
|
const char *p_to_user = switch_str_nil(switch_event_get_header(helper->event, "to-user"));
|
||||||
|
|
||||||
if (is_dialog) {
|
if (is_dialog) {
|
||||||
SWITCH_STANDARD_STREAM(stream);
|
SWITCH_STANDARD_STREAM(stream);
|
||||||
}
|
}
|
||||||
@ -1011,6 +1023,10 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char *
|
|||||||
from_id = dest;
|
from_id = dest;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (switch_strlen_zero(from_id)) {
|
||||||
|
from_id = p_to_user;
|
||||||
|
}
|
||||||
|
|
||||||
if (switch_strlen_zero(from_id)) {
|
if (switch_strlen_zero(from_id)) {
|
||||||
switch_snprintf(status_line, sizeof(status_line), "On The Phone");
|
switch_snprintf(status_line, sizeof(status_line), "On The Phone");
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user