Merge anthm's monitor fixes (better default path, set variable for monitor) (bug...
authorMark Spencer <markster@digium.com>
Mon, 10 Jan 2005 04:29:33 +0000 (04:29 +0000)
committerMark Spencer <markster@digium.com>
Mon, 10 Jan 2005 04:29:33 +0000 (04:29 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@4745 65c4cc65-6c06-0410-ace0-fbb531ad65f3

doc/README.variables
res/res_monitor.c

index 8ba423b..4cf4245 100755 (executable)
@@ -104,6 +104,9 @@ ${QUEUE_PRIO}               Queue priority
 The following variables can be set to change certian behaviour:
 ${TOUCH_MONITOR}       The filename base to use with Touch Monitor (auto record)
 
+The monitor application sets the following variable:
+${MONITOR}             Set to "true" if the channel is/has been monitored.
+
 There are two reference modes - reference by value and reference by name. 
 To refer to a variable with its name (as an argument to a function that 
 requires a variable), just write the name. To refer to the variable's value, 
index 0603ad9..4c93517 100755 (executable)
@@ -122,14 +122,17 @@ int ast_monitor_start(    struct ast_channel *chan, const char *format_spec,
                        seq++;
                        ast_mutex_unlock(&monitorlock);
 
-                       channel_name = strdup(chan->name);
-                       while((p = strchr(channel_name, '/'))) {
-                               *p = '-';
+                       if((channel_name = ast_strdupa(chan->name))) {
+                               while((p = strchr(channel_name, '/'))) {
+                                       *p = '-';
+                               }
+                               snprintf(monitor->filename_base, FILENAME_MAX, "%s/%ld-%s",
+                                                AST_MONITOR_DIR, time(NULL),channel_name);
+                               monitor->filename_changed = 1;
+                       } else {
+                               ast_log(LOG_ERROR,"Failed to allocate Memory\n");
+                               return -1;
                        }
-                       snprintf(monitor->filename_base, FILENAME_MAX, "%s/%s",
-                                               AST_MONITOR_DIR, channel_name);
-                       monitor->filename_changed = 1;
-                       free(channel_name);
                }
 
                monitor->stop = ast_monitor_stop;
@@ -168,6 +171,8 @@ int ast_monitor_start(      struct ast_channel *chan, const char *format_spec,
                        return -1;
                }
                chan->monitor = monitor;
+               /* so we know this call has been monitored in case we need to bill for it or something */
+               pbx_builtin_setvar_helper(chan, "__MONITORED","true");
        } else {
                ast_log(LOG_DEBUG,"Cannot start monitoring %s, already monitored\n",
                                        chan->name);