char bug_key[256] = "";
int send_ringback = 0;
uint8_t ring_ready_val = 0;
- int pickups = 0;
+ int pickups_without_timelimit = 0;
oglobals->hups = 0;
oglobals->idx = IDX_NADA;
if (originate_status[i].peer_channel && switch_channel_test_flag(originate_status[i].peer_channel, CF_PICKUP)) {
- pickups++;
+ if (originate_status[i].per_channel_timelimit_sec == 0) {
+ pickups_without_timelimit++;
+ }
}
if (!(originate_status[i].peer_channel && originate_status[i].peer_session)) {
) {
(oglobals->hups)++;
if (switch_channel_test_flag(originate_status[i].peer_channel, CF_PICKUP)) {
- pickups--;
+ if (originate_status[i].per_channel_timelimit_sec == 0) {
+ pickups_without_timelimit--;
+ }
}
} else if ((switch_channel_test_flag(originate_status[i].peer_channel, CF_ANSWERED) ||
(oglobals->early_ok && switch_channel_test_flag(originate_status[i].peer_channel, CF_EARLY_MEDIA)) ||
}
}
- if (oglobals->hups > 0 && oglobals->hups + pickups == len) {
+ if (oglobals->hups > 0 && oglobals->hups + pickups_without_timelimit == len) {
+ /* only pickup channels with no timelimit remain */
rval = 0;
} else {
rval = 1;
end:
- if (rval == 0 && pickups) {
+ if (rval == 0 && pickups_without_timelimit) {
for (i = 0; i < len; i++) {
if (originate_status[i].peer_channel && switch_channel_test_flag(originate_status[i].peer_channel, CF_PICKUP) &&
switch_channel_up(originate_status[i].peer_channel)) {