mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-19 11:42:27 +00:00
Make sure a channel exists before attempting to start or stop channel
autoservice in func_lock and func_shell. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@87233 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -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)
|
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_copy_string(buf, get_lock(chan, data, 0) ? "0" : "1", len);
|
||||||
ast_autoservice_stop(chan);
|
|
||||||
|
if (chan)
|
||||||
|
ast_autoservice_stop(chan);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int trylock_read(struct ast_channel *chan, const char *cmd, char *data, char *buf, size_t len)
|
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_copy_string(buf, get_lock(chan, data, 1) ? "0" : "1", len);
|
||||||
ast_autoservice_stop(chan);
|
|
||||||
|
if (chan)
|
||||||
|
ast_autoservice_stop(chan);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -49,7 +49,8 @@ static int shell_helper(struct ast_channel *chan, const char *cmd, char *data,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
ast_autoservice_start(chan);
|
if (chan)
|
||||||
|
ast_autoservice_start(chan);
|
||||||
|
|
||||||
if (len >= 1) {
|
if (len >= 1) {
|
||||||
FILE *ptr;
|
FILE *ptr;
|
||||||
@@ -62,7 +63,8 @@ static int shell_helper(struct ast_channel *chan, const char *cmd, char *data,
|
|||||||
pclose(ptr);
|
pclose(ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
ast_autoservice_stop(chan);
|
if (chan)
|
||||||
|
ast_autoservice_stop(chan);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user