diff --git a/src/channels/chan_voicemngr.c b/src/channels/chan_voicemngr.c index 30724ef278d294fcd14f0271e429aaaea551909a..9025979a582701c4684cf6dad77b2ac19d1d7b4c 100644 --- a/src/channels/chan_voicemngr.c +++ b/src/channels/chan_voicemngr.c @@ -1025,6 +1025,8 @@ static int chan_voicemngr_indicate(struct ast_channel *ast, int condition, const case AST_CAUSE_NO_USER_RESPONSE: case AST_CAUSE_NO_ANSWER: case AST_CAUSE_CONGESTION: + case AST_CAUSE_UNALLOCATED: + case AST_CAUSE_INTERWORKING: endpt_signal(sub->parent->line_id, "ringback", "off", NULL); if (ast_channel_state(ast) != AST_STATE_UP) { endpt_signal(sub->parent->line_id, "congestion", "on", NULL); @@ -2926,7 +2928,7 @@ static void handle_dect_event(struct chan_voicemngr_subchannel *sub, struct chan if (sub->channel_state == INCALL && sub_peer->channel_state != CALLWAITING) { ast_log(LOG_ERROR, "Hanging up call\n"); ast_queue_control(owner, AST_CONTROL_HANGUP); - } else if ((sub->channel_state == RINGBACK || sub->channel_state == CALLENDED) && sub_peer->channel_state == ONHOLD) { + } else if ((sub->channel_state == RINGBACK || sub->channel_state == CALLENDED || sub->channel_state == CALLING) && sub_peer->channel_state == ONHOLD) { endpt_signal(sub->parent->line_id, "ringback", "off", NULL); ast_queue_control(owner, AST_CONTROL_HANGUP); chan_voicemngr_unmute_connection(sub_peer);