Fix a couple of places where ast_frfree() was not called on a frame that came

from a translator.  This showed itself by g729 decoders not getting released.
Since the flag inside the translator frame never got unset by freeing the frame
to indicate it was no longer in use, the translators never got destroyed, and
thus the g729 licenses were not released.

(closes issue #11892)
Reported by: xrg
Patches:
      11892.diff uploaded by russell (license 2)
Tested by: xrg, russell


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@101601 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Russell Bryant
2008-01-31 23:10:06 +00:00
parent bd9a40f98a
commit e4ee2274a1
2 changed files with 3 additions and 0 deletions

View File

@@ -205,6 +205,7 @@ int ast_writestream(struct ast_filestream *fs, struct ast_frame *f)
trf = ast_translate(fs->trans, f, 0);
if (trf) {
res = fs->fmt->write(fs, trf);
ast_frfree(trf);
if (res)
ast_log(LOG_WARNING, "Translated frame write failed\n");
} else

View File

@@ -355,6 +355,8 @@ struct ast_frame *ast_translate(struct ast_trans_pvt *path, struct ast_frame *f,
delivery = f->delivery;
for ( ; out && p ; p = p->next) {
framein(p, out);
if (out != f)
ast_frfree(out);
out = p->t->frameout(p);
}
if (consume)