diff --git a/channels/chan_mgcp.c b/channels/chan_mgcp.c
index 3e9af5734717acc04dbc977f4abd6d6e2c847acd..de7c624be0106e318803300b36f7053b86bb42ed 100644
--- a/channels/chan_mgcp.c
+++ b/channels/chan_mgcp.c
@@ -998,6 +998,9 @@ static int mgcp_hangup(struct ast_channel *ast)
 	sub->outgoing = 0;
 	sub->cxmode = MGCP_CX_INACTIVE;
 	sub->callid[0] = '\0';
+	if (p) {
+		memset(p->dtmf_buf, 0, sizeof(p->dtmf_buf));
+	}
 	/* Reset temporary destination */
 	memset(&sub->tmpdest, 0, sizeof(sub->tmpdest));
 	if (sub->rtp) {