aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xChangeLog2
-rwxr-xr-xapps/app_record.c8
2 files changed, 6 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 2b06bb80d..8bdb14926 100755
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
2005-11-20 Russell Bryant <russell@digium.com>
+ * apps/app_record.c: Don't leak a frame if writing it to the file fails. (issue #5787)
+
* Makefile: Create the monitor spool directory when the other spool directories are created.
* pbx.c.c: Remove some useless checks and unnecessary calls to ast_strlen_zero(). (issue #5805)
diff --git a/apps/app_record.c b/apps/app_record.c
index 7c50a1d73..85310ea70 100755
--- a/apps/app_record.c
+++ b/apps/app_record.c
@@ -277,6 +277,7 @@ static int record_exec(struct ast_channel *chan, void *data)
if (res) {
ast_log(LOG_WARNING, "Problem writing frame\n");
+ ast_frfree(f);
break;
}
@@ -295,16 +296,15 @@ static int record_exec(struct ast_channel *chan, void *data)
break;
}
}
- }
- if (f->frametype == AST_FRAME_VIDEO) {
+ } else if (f->frametype == AST_FRAME_VIDEO) {
res = ast_writestream(s, f);
if (res) {
ast_log(LOG_WARNING, "Problem writing frame\n");
+ ast_frfree(f);
break;
}
- }
- if ((f->frametype == AST_FRAME_DTMF) &&
+ } else if ((f->frametype == AST_FRAME_DTMF) &&
(f->subclass == terminator)) {
ast_frfree(f);
break;