]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Fix a memory leak in the ast_answer / __ast_answer API call.
authorJoshua Colp <jcolp@digium.com>
Mon, 16 Mar 2009 13:58:24 +0000 (13:58 +0000)
committerJoshua Colp <jcolp@digium.com>
Mon, 16 Mar 2009 13:58:24 +0000 (13:58 +0000)
For a channel that is not yet answered this API call will wait
until a voice frame is received on the channel before returning.
It does this by waiting for frames on the channel and reading them
in. The frames read in were not freed when they should have been.

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@182171 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/channel.c

index 5a0994ea7070c0f929642b1c6b30e45128138e9c..f4ab05f95cad1bc6336bdf0fe0513d0f7f74a2a3 100644 (file)
@@ -1755,14 +1755,19 @@ int __ast_answer(struct ast_channel *chan, unsigned int delay,  int cdr_answer)
                                }
                                f = ast_read(chan);
                                if (!f || (f->frametype == AST_FRAME_CONTROL && f->subclass == AST_CONTROL_HANGUP)) {
+                                       if (f) {
+                                               ast_frfree(f);
+                                       }
                                        res = -1;
                                        ast_debug(2, "Hangup of channel %s detected in answer routine\n", chan->name);
                                        break;
                                }
                                if (f->frametype == AST_FRAME_VOICE) {
+                                       ast_frfree(f);
                                        res = 0;
                                        break;
                                }
+                               ast_frfree(f);
                        }
                }
                break;