mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-23 14:44:28 +00:00
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: https://origsvn.digium.com/svn/asterisk/trunk@182171 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -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;
|
||||
|
Reference in New Issue
Block a user