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);