diff --git a/channels/chan_zap.c b/channels/chan_zap.c
index 48675db0a0ddb2b6a8a33e6d7c469e2259026cbd..b7a22b9ae274704ee7c517697c79652f8bfded99 100755
--- a/channels/chan_zap.c
+++ b/channels/chan_zap.c
@@ -1769,6 +1769,8 @@ static int zt_hangup(struct ast_channel *ast)
 				swap_subs(p, SUB_CALLWAIT, SUB_REAL);
 				unalloc_sub(p, SUB_CALLWAIT);
 				p->owner = p->subs[SUB_REAL].owner;
+				if (p->owner->_state != AST_STATE_UP)
+					p->subs[SUB_REAL].needanswer = 1;
 				if (p->subs[SUB_REAL].owner->bridge)
 					ast_moh_stop(p->subs[SUB_REAL].owner->bridge);
 			} else if (p->subs[SUB_THREEWAY].zfd > -1) {