channel = switch_core_session_get_channel(session);
switch_channel_stop_broadcast(channel);
switch_channel_wait_for_flag(channel, CF_BROADCAST, SWITCH_FALSE, 2000);
+
switch_core_session_rwunlock(session);
}
}
-static void start_hold(const char *uuid, const char *music)
+static void start_hold(const char *uuid, const char *stream)
{
switch_core_session_t *session;
switch_channel_t *channel;
- const char *stream = NULL;
-
if (!uuid) {
return;
if ((session = switch_core_session_locate(uuid))) {
channel = switch_core_session_get_channel(session);
- if (!(stream = switch_channel_get_variable(channel, SWITCH_HOLD_MUSIC_VARIABLE))) {
- stream = music;
- if (switch_strlen_zero(stream)) {
- stream = globals.hold_music;
- }
+ if (switch_strlen_zero(stream) && !(stream = switch_channel_get_variable(channel, SWITCH_HOLD_MUSIC_VARIABLE))) {
+ stream = globals.hold_music;
}
if (!switch_strlen_zero(stream)) {
break;
case ZAP_CHANNEL_STATE_DIALTONE:
{
- zap_channel_done(zchan);
+ memset(&zchan->caller_data, 0, sizeof(zchan->caller_data));
*dtmf = '\0';
dtmf_offset = 0;
zap_buffer_zero(dt_buffer);
break;
case ZAP_CHANNEL_STATE_GET_CALLERID:
{
- zap_channel_done(zchan);
+ memset(&zchan->caller_data, 0, sizeof(zchan->caller_data));
zap_channel_command(zchan, ZAP_COMMAND_ENABLE_CALLERID_DETECT, NULL);
continue;
}
{
zchan->caller_data.hangup_cause = ZAP_CAUSE_NORMAL_CIRCUIT_CONGESTION;
if (zap_test_flag(zchan, ZAP_CHANNEL_OFFHOOK) && !zap_test_flag(zchan, ZAP_CHANNEL_OUTBOUND)) {
- zap_channel_done(zchan);
zap_buffer_zero(dt_buffer);
teletone_run(&ts, zchan->span->tone_map[ZAP_TONEMAP_BUSY]);
indicate = 1;
case ZAP_CHANNEL_STATE_ATTN:
{
if (zap_test_flag(zchan, ZAP_CHANNEL_OFFHOOK) && !zap_test_flag(zchan, ZAP_CHANNEL_OUTBOUND)) {
- zap_channel_done(zchan);
zap_buffer_zero(dt_buffer);
teletone_run(&ts, zchan->span->tone_map[ZAP_TONEMAP_ATTN]);
indicate = 1;