Make sure a channel exists before attempting to start or stop channel
authorRussell Bryant <russell@russellbryant.com>
Sat, 27 Oct 2007 01:15:02 +0000 (01:15 +0000)
committerRussell Bryant <russell@russellbryant.com>
Sat, 27 Oct 2007 01:15:02 +0000 (01:15 +0000)
autoservice in func_lock and func_shell.

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

funcs/func_lock.c
funcs/func_shell.c

index b8c6853..9985f26 100644 (file)
@@ -256,19 +256,27 @@ static int unlock_read(struct ast_channel *chan, const char *cmd, char *data, ch
 }
 
 static int lock_read(struct ast_channel *chan, const char *cmd, char *data, char *buf, size_t len)
-{
-       ast_autoservice_start(chan);
+{      
+       if (chan)
+               ast_autoservice_start(chan);
+
        ast_copy_string(buf, get_lock(chan, data, 0) ? "0" : "1", len);
-       ast_autoservice_stop(chan);
+
+       if (chan)
+               ast_autoservice_stop(chan);
 
        return 0;
 }
 
 static int trylock_read(struct ast_channel *chan, const char *cmd, char *data, char *buf, size_t len)
 {
-       ast_autoservice_start(chan);
+       if (chan)
+               ast_autoservice_start(chan);
+
        ast_copy_string(buf, get_lock(chan, data, 1) ? "0" : "1", len);
-       ast_autoservice_stop(chan);
+
+       if (chan)
+               ast_autoservice_stop(chan);
 
        return 0;
 }
index 9653fca..3acafe2 100644 (file)
@@ -49,7 +49,8 @@ static int shell_helper(struct ast_channel *chan, const char *cmd, char *data,
                return -1;
        }
 
-       ast_autoservice_start(chan);
+       if (chan)
+               ast_autoservice_start(chan);
 
        if (len >= 1) {
                FILE *ptr;
@@ -62,7 +63,8 @@ static int shell_helper(struct ast_channel *chan, const char *cmd, char *data,
                pclose(ptr);
        }
 
-       ast_autoservice_stop(chan);
+       if (chan)
+               ast_autoservice_stop(chan);
 
        return 0;
 }