Merged revisions 27468 via svnmerge from
authorKevin P. Fleming <kpfleming@digium.com>
Tue, 16 May 2006 20:08:29 +0000 (20:08 +0000)
committerKevin P. Fleming <kpfleming@digium.com>
Tue, 16 May 2006 20:08:29 +0000 (20:08 +0000)
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

index 5a28296..1b468a9 100644 (file)
--- 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;