revert my pass through the tree to remove checks of the result of ast_strdupa
[asterisk/asterisk.git] / apps / app_mixmonitor.c
old mode 100755 (executable)
new mode 100644 (file)
index 6667377..279f0e6
@@ -2,7 +2,7 @@
  * Asterisk -- An open source telephony toolkit.
  *
  * Copyright (C) 2005, Anthony Minessale II
- * Copyright (C) 2005, Digium, Inc.
+ * Copyright (C) 2005 - 2006, Digium, Inc.
  *
  * Mark Spencer <markster@digium.com>
  * Kevin P. Fleming <kpfleming@digium.com>
  */
 
 /*! \file
+ *
  * \brief MixMonitor() - Record a call and mix the audio during the recording
  * \ingroup applications
+ *
+ * \author Mark Spencer <markster@digium.com>
+ * \author Kevin P. Fleming <kpfleming@digium.com>
+ *
+ * \note Based on app_muxmon.c provided by
+ * Anthony Minessale II <anthmct@yahoo.com>
  */
 
 #include <stdlib.h>
@@ -38,6 +45,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 #include "asterisk/file.h"
 #include "asterisk/logger.h"
 #include "asterisk/channel.h"
+#include "asterisk/chanspy.h"
 #include "asterisk/pbx.h"
 #include "asterisk/module.h"
 #include "asterisk/lock.h"
@@ -45,6 +53,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 #include "asterisk/options.h"
 #include "asterisk/app.h"
 #include "asterisk/linkedlists.h"
+#include "asterisk/utils.h"
 
 #define get_volfactor(x) x ? ((x > 0) ? (1 << x) : ((1 << abs(x)) * -1)) : 0
 
@@ -111,9 +120,9 @@ AST_APP_OPTIONS(mixmonitor_opts, {
 
 static void stopmon(struct ast_channel *chan, struct ast_channel_spy *spy) 
 {
-       /* If our status has changed, then the channel we're spying on is gone....
+       /* If our status has changed to DONE, then the channel we're spying on is gone....
           DON'T TOUCH IT!!!  RUN AWAY!!! */
-       if (spy->status != CHANSPY_RUNNING)
+       if (spy->status == CHANSPY_DONE)
                return;
 
        if (!chan)
@@ -284,8 +293,7 @@ static void launch_monitor_thread(struct ast_channel *chan, const char *filename
        if (!ast_strlen_zero(post_process))
                len += strlen(post_process) + 1;
 
-       if (!(mixmonitor = calloc(1, len))) {
-               ast_log(LOG_ERROR, "Memory Error!\n");
+       if (!(mixmonitor = ast_calloc(1, len))) {
                return;
        }