mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-07-07 16:09:54 +00:00
Skinny: pass remote session to ring_lines because BOND is not set yet
This commit is contained in:
parent
9d45690006
commit
a1f9cc1efa
@ -1043,7 +1043,7 @@ switch_call_cause_t channel_outgoing_channel(switch_core_session_t *session, swi
|
|||||||
switch_safe_free(sql);
|
switch_safe_free(sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
cause = skinny_ring_lines(tech_pvt);
|
cause = skinny_ring_lines(tech_pvt, session);
|
||||||
|
|
||||||
if(cause != SWITCH_CAUSE_SUCCESS) {
|
if(cause != SWITCH_CAUSE_SUCCESS) {
|
||||||
goto error;
|
goto error;
|
||||||
|
@ -418,6 +418,7 @@ switch_status_t skinny_session_send_call_info_all(switch_core_session_t *session
|
|||||||
|
|
||||||
struct skinny_ring_lines_helper {
|
struct skinny_ring_lines_helper {
|
||||||
private_t *tech_pvt;
|
private_t *tech_pvt;
|
||||||
|
switch_core_session_t *remote_session;
|
||||||
uint32_t lines_count;
|
uint32_t lines_count;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -450,21 +451,22 @@ int skinny_ring_lines_callback(void *pArg, int argc, char **argv, char **columnN
|
|||||||
device_name, device_instance, &listener);
|
device_name, device_instance, &listener);
|
||||||
if(listener) {
|
if(listener) {
|
||||||
switch_channel_t *channel = switch_core_session_get_channel(helper->tech_pvt->session);
|
switch_channel_t *channel = switch_core_session_get_channel(helper->tech_pvt->session);
|
||||||
const char *remote_uuid;
|
|
||||||
switch_core_session_t *remote_session;
|
|
||||||
helper->lines_count++;
|
helper->lines_count++;
|
||||||
switch_channel_set_variable(channel, "effective_callee_id_number", value);
|
switch_channel_set_variable(channel, "effective_callee_id_number", value);
|
||||||
switch_channel_set_variable(channel, "effective_callee_id_name", caller_name);
|
switch_channel_set_variable(channel, "effective_callee_id_name", caller_name);
|
||||||
if ((remote_uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE)) && (remote_session = switch_core_session_locate(remote_uuid))) {
|
if (helper->remote_session) {
|
||||||
switch_core_session_message_t *msg;
|
switch_core_session_message_t *msg;
|
||||||
msg = switch_core_session_alloc(remote_session, sizeof(*msg));
|
msg = switch_core_session_alloc(helper->remote_session, sizeof(*msg));
|
||||||
MESSAGE_STAMP_FFL(msg);
|
MESSAGE_STAMP_FFL(msg);
|
||||||
msg->message_id = SWITCH_MESSAGE_INDICATE_DISPLAY;
|
msg->message_id = SWITCH_MESSAGE_INDICATE_DISPLAY;
|
||||||
msg->string_array_arg[0] = switch_core_session_strdup(remote_session, caller_name);
|
msg->string_array_arg[0] = switch_core_session_strdup(helper->remote_session, caller_name);
|
||||||
msg->string_array_arg[1] = switch_core_session_strdup(remote_session, value);
|
msg->string_array_arg[1] = switch_core_session_strdup(helper->remote_session, value);
|
||||||
msg->from = __FILE__;
|
msg->from = __FILE__;
|
||||||
switch_core_session_queue_message(remote_session, msg);
|
if (switch_core_session_queue_message(helper->remote_session, msg) != SWITCH_STATUS_SUCCESS) {
|
||||||
switch_core_session_rwunlock(remote_session);
|
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(helper->tech_pvt->session), SWITCH_LOG_WARNING,
|
||||||
|
"Unable to send SWITCH_MESSAGE_INDICATE_DISPLAY message to channel %s\n",
|
||||||
|
switch_core_session_get_uuid(helper->remote_session));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
skinny_line_set_state(listener, line_instance, helper->tech_pvt->call_id, SKINNY_RING_IN);
|
skinny_line_set_state(listener, line_instance, helper->tech_pvt->call_id, SKINNY_RING_IN);
|
||||||
@ -484,7 +486,7 @@ int skinny_ring_lines_callback(void *pArg, int argc, char **argv, char **columnN
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch_call_cause_t skinny_ring_lines(private_t *tech_pvt)
|
switch_call_cause_t skinny_ring_lines(private_t *tech_pvt, switch_core_session_t *remote_session)
|
||||||
{
|
{
|
||||||
switch_status_t status;
|
switch_status_t status;
|
||||||
struct skinny_ring_lines_helper helper = {0};
|
struct skinny_ring_lines_helper helper = {0};
|
||||||
@ -494,6 +496,7 @@ switch_call_cause_t skinny_ring_lines(private_t *tech_pvt)
|
|||||||
switch_assert(tech_pvt->session);
|
switch_assert(tech_pvt->session);
|
||||||
|
|
||||||
helper.tech_pvt = tech_pvt;
|
helper.tech_pvt = tech_pvt;
|
||||||
|
helper.remote_session = remote_session;
|
||||||
helper.lines_count = 0;
|
helper.lines_count = 0;
|
||||||
|
|
||||||
status = skinny_session_walk_lines(tech_pvt->profile,
|
status = skinny_session_walk_lines(tech_pvt->profile,
|
||||||
|
@ -40,7 +40,7 @@ skinny_action_t skinny_session_dest_match_pattern(switch_core_session_t *session
|
|||||||
switch_status_t skinny_session_process_dest(switch_core_session_t *session, listener_t *listener, uint32_t line_instance, char *dest, char append_dest, uint32_t backspace);
|
switch_status_t skinny_session_process_dest(switch_core_session_t *session, listener_t *listener, uint32_t line_instance, char *dest, char append_dest, uint32_t backspace);
|
||||||
switch_status_t skinny_session_send_call_info(switch_core_session_t *session, listener_t *listener, uint32_t line_instance);
|
switch_status_t skinny_session_send_call_info(switch_core_session_t *session, listener_t *listener, uint32_t line_instance);
|
||||||
switch_status_t skinny_session_send_call_info_all(switch_core_session_t *session);
|
switch_status_t skinny_session_send_call_info_all(switch_core_session_t *session);
|
||||||
switch_call_cause_t skinny_ring_lines(private_t *tech_pvt);
|
switch_call_cause_t skinny_ring_lines(private_t *tech_pvt, switch_core_session_t *remote_session);
|
||||||
switch_status_t skinny_session_ring_out(switch_core_session_t *session, listener_t *listener, uint32_t line_instance);
|
switch_status_t skinny_session_ring_out(switch_core_session_t *session, listener_t *listener, uint32_t line_instance);
|
||||||
switch_status_t skinny_session_answer(switch_core_session_t *session, listener_t *listener, uint32_t line_instance);
|
switch_status_t skinny_session_answer(switch_core_session_t *session, listener_t *listener, uint32_t line_instance);
|
||||||
switch_status_t skinny_session_start_media(switch_core_session_t *session, listener_t *listener, uint32_t line_instance);
|
switch_status_t skinny_session_start_media(switch_core_session_t *session, listener_t *listener, uint32_t line_instance);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user