]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Fix jitterbuffer logging not creating logfiles.
authorJeff Peeler <jpeeler@digium.com>
Wed, 10 Mar 2010 18:25:18 +0000 (18:25 +0000)
committerJeff Peeler <jpeeler@digium.com>
Wed, 10 Mar 2010 18:25:18 +0000 (18:25 +0000)
Three changes made here:
1) Do not fail if a previous log does not exist (in fact, this is probably
expected).
2) Ensure that the file descriptor to write to gets assigned properly. I am at
a loss as to why assigning safe_fd outside the if fixes this, but it makes
the if statement slightly less complicated anyway.
3) Move up the failure message so that the errno of the failure is not
overwritten by fclose.

(closes issue #16917)
Reported by: Artem

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

main/abstract_jb.c

index f23c176b1d1d04b7650bb1c6c821394b58cf270a..84b9d6199f7da499a8cfd2d8e804cbadecd98bfe 100644 (file)
@@ -498,12 +498,14 @@ static int create_jb(struct ast_channel *chan, struct ast_frame *frr)
 
                snprintf(logfile_pathname, sizeof(logfile_pathname),
                        "/tmp/ast_%s_jb_%s--%s.log", jbimpl->name, name1, name2);
-               if (!(safe_fd = mkstemp(safe_logfile)) > -1 || unlink(logfile_pathname) || link(safe_logfile, logfile_pathname) || unlink(safe_logfile) || !(jb->logfile = fdopen(safe_fd, "w+b"))) {
+               unlink(logfile_pathname);
+               safe_fd = mkstemp(safe_logfile);
+               if (safe_fd < 0 || link(safe_logfile, logfile_pathname) || unlink(safe_logfile) || !(jb->logfile = fdopen(safe_fd, "w+b"))) {
+                       ast_log(LOG_ERROR, "Failed to create frame log file with pathname '%s': %s\n", logfile_pathname, strerror(errno));
                        jb->logfile = NULL;
                        if (safe_fd > -1) {
                                close(safe_fd);
                        }
-                       ast_log(LOG_ERROR, "Failed to create frame log file with pathname '%s': %s\n", logfile_pathname, strerror(errno));
                }
 
                if (res == JB_IMPL_OK) {