From e140c0ba9f34a09c9cafea8bae2195408e3048d3 Mon Sep 17 00:00:00 2001 From: "Kevin P. Fleming" Date: Tue, 16 May 2006 20:08:29 +0000 Subject: [PATCH] Merged revisions 27468 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.2 ........ r27468 | kpfleming | 2006-05-16 15:05:17 -0500 (Tue, 16 May 2006) | 2 lines don't leak frames when deferring DTMF or dropping duplicate ANSWER frames (issue #7041, slightly different fix, reported/patched by clausf) ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@27477 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- channel.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/channel.c b/channel.c index 5a28296548..1b468a9397 100644 --- a/channel.c +++ b/channel.c @@ -1955,9 +1955,11 @@ static struct ast_frame *__ast_read(struct ast_channel *chan, int dropaudio) if (f->subclass == AST_CONTROL_ANSWER) { if (!ast_test_flag(chan, AST_FLAG_OUTGOING)) { ast_log(LOG_DEBUG, "Ignoring answer on an inbound call!\n"); + ast_frfree(f); f = &ast_null_frame; } else if (prestate == AST_STATE_UP) { ast_log(LOG_DEBUG, "Dropping duplicate answer!\n"); + ast_frfree(f); f = &ast_null_frame; } else { /* Answer the CDR */ @@ -1973,6 +1975,7 @@ static struct ast_frame *__ast_read(struct ast_channel *chan, int dropaudio) chan->dtmfq[strlen(chan->dtmfq)] = f->subclass; else ast_log(LOG_WARNING, "Dropping deferred DTMF digits on %s\n", chan->name); + ast_frfree(f); f = &ast_null_frame; } break;