diff --git a/src/switch_channel.c b/src/switch_channel.c index a3dd9d9978..1ae67f2915 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -4596,7 +4596,7 @@ static void fetch_device_stats(switch_device_record_t *drec) drec->stats.early++; } else if (np->callstate == CCS_RINGING) { drec->stats.ringing++; - } else { + } else if (np->callstate != CCS_DOWN) { drec->stats.active++; } } @@ -4751,6 +4751,12 @@ static void switch_channel_check_device_state(switch_channel_t *channel, switch_ } } + if (drec->state == SDS_DOWN && drec->last_state == SDS_DOWN) { + switch_mutex_unlock(drec->mutex); + switch_mutex_unlock(globals.device_mutex); + return; + } + switch(drec->state) { case SDS_ACTIVE: case SDS_ACTIVE_MULTI: