mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-06-13 02:37:22 +00:00
FS-4043 --resolve
This commit is contained in:
parent
0eb9b0101f
commit
ab0736127a
@ -535,6 +535,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_parse_event(switch_core_session_t *se
|
|||||||
char *loop_h = switch_event_get_header(event, "loops");
|
char *loop_h = switch_event_get_header(event, "loops");
|
||||||
char *hold_bleg = switch_event_get_header(event, "hold-bleg");
|
char *hold_bleg = switch_event_get_header(event, "hold-bleg");
|
||||||
int loops = 1;
|
int loops = 1;
|
||||||
|
int inner = 0;
|
||||||
|
|
||||||
if (zstr(app_arg) && !zstr(content_type) && !strcasecmp(content_type, "text/plain")) {
|
if (zstr(app_arg) && !zstr(content_type) && !strcasecmp(content_type, "text/plain")) {
|
||||||
app_arg = switch_event_get_body(event);
|
app_arg = switch_event_get_body(event);
|
||||||
@ -550,7 +551,13 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_parse_event(switch_core_session_t *se
|
|||||||
switch_core_session_t *b_session = NULL;
|
switch_core_session_t *b_session = NULL;
|
||||||
|
|
||||||
switch_channel_clear_flag(channel, CF_STOP_BROADCAST);
|
switch_channel_clear_flag(channel, CF_STOP_BROADCAST);
|
||||||
|
|
||||||
|
if (switch_channel_test_flag(channel, CF_BROADCAST)) {
|
||||||
|
inner++;
|
||||||
|
hold_bleg = NULL;
|
||||||
|
} else {
|
||||||
switch_channel_set_flag(channel, CF_BROADCAST);
|
switch_channel_set_flag(channel, CF_BROADCAST);
|
||||||
|
}
|
||||||
if (hold_bleg && switch_true(hold_bleg)) {
|
if (hold_bleg && switch_true(hold_bleg)) {
|
||||||
if ((b_uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE))) {
|
if ((b_uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE))) {
|
||||||
const char *stream;
|
const char *stream;
|
||||||
@ -592,6 +599,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_parse_event(switch_core_session_t *se
|
|||||||
switch_channel_get_name(channel), app_name, switch_str_nil(app_arg));
|
switch_channel_get_name(channel), app_name, switch_str_nil(app_arg));
|
||||||
b4 = switch_micro_time_now();
|
b4 = switch_micro_time_now();
|
||||||
if (switch_core_session_execute_application(session, app_name, app_arg) != SWITCH_STATUS_SUCCESS) {
|
if (switch_core_session_execute_application(session, app_name, app_arg) != SWITCH_STATUS_SUCCESS) {
|
||||||
|
if (!inner || switch_channel_test_flag(channel, CF_STOP_BROADCAST)) switch_channel_clear_flag(channel, CF_BROADCAST);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -610,7 +618,11 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_parse_event(switch_core_session_t *se
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!inner || switch_channel_test_flag(channel, CF_STOP_BROADCAST)) {
|
||||||
switch_channel_clear_flag(channel, CF_BROADCAST);
|
switch_channel_clear_flag(channel, CF_BROADCAST);
|
||||||
|
switch_channel_set_flag(channel, CF_BREAK);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
} else if (cmd_hash == CMD_UNICAST) {
|
} else if (cmd_hash == CMD_UNICAST) {
|
||||||
char *local_ip = switch_event_get_header(event, "local-ip");
|
char *local_ip = switch_event_get_header(event, "local-ip");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user