if (switch_channel_test_flag(channel, CF_BROADCAST)) {
switch_channel_stop_broadcast(channel);
} else {
- switch_channel_set_flag(channel, CF_BREAK);
+ switch_channel_set_flag_value(channel, CF_BREAK, all ? 2 : 1);
}
if (qchannel) {
if (switch_channel_test_flag(qchannel, CF_BROADCAST)) {
switch_channel_stop_broadcast(qchannel);
} else {
- switch_channel_set_flag(qchannel, CF_BREAK);
+ switch_channel_set_flag_value(qchannel, CF_BREAK, all ? 2 : 1);
}
}
for (;;) {
int do_speed = 1;
int last_speed = -1;
-
+ int f;
+
if (!switch_channel_ready(channel)) {
status = SWITCH_STATUS_FALSE;
break;
}
- if (switch_channel_test_flag(channel, CF_BREAK)) {
+ if ((f = switch_channel_test_flag(channel, CF_BREAK))) {
switch_channel_clear_flag(channel, CF_BREAK);
+ if (f == 2) {
+ done = 1;
+ }
status = SWITCH_STATUS_BREAK;
break;
}