aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfile <file@f38db490-d61c-443f-a65b-d21fe96a405b>2009-03-16 13:59:26 +0000
committerfile <file@f38db490-d61c-443f-a65b-d21fe96a405b>2009-03-16 13:59:26 +0000
commita12161ad1f69dd874585f67a4bfd1720f836d08c (patch)
tree6da58e902470733e8a532fc395bdb1fb3f047399
parenta3eb50488cc80b34606850ae3b6863ff7189159f (diff)
Merged revisions 182171 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ........ r182171 | file | 2009-03-16 10:58:24 -0300 (Mon, 16 Mar 2009) | 7 lines Fix a memory leak in the ast_answer / __ast_answer API call. 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: http://svn.digium.com/svn/asterisk/branches/1.6.0@182172 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r--main/channel.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/main/channel.c b/main/channel.c
index 0b4d154bf..110486d57 100644
--- a/main/channel.c
+++ b/main/channel.c
@@ -1742,14 +1742,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;