diff --git a/channels/chan_agent.c b/channels/chan_agent.c
index 402c0949c7bcd8c1479f6329454a67632b46d0c6..2b3930d078992102693c4ff176ef486c918cc2e6 100755
--- a/channels/chan_agent.c
+++ b/channels/chan_agent.c
@@ -354,7 +354,7 @@ static struct ast_frame  *agent_read(struct ast_channel *ast)
 			p->acknowledged = 0;
 		}
 	}
-	if (f && (f->frametype == AST_FRAME_CONTROL) && (f->subclass == AST_CONTROL_ANSWER)) {
+	if ((p->chan && (p->chan->_state != AST_STATE_UP)) && f && (f->frametype == AST_FRAME_CONTROL) && (f->subclass == AST_CONTROL_ANSWER)) {
 /* TC */
 		if (p->ackcall) {
 			if (option_verbose > 2)