From: Russell Bryant Date: Thu, 13 Oct 2005 20:30:39 +0000 (+0000) Subject: allow manager getvar action to retrieve global variables as well as X-Git-Tag: 1.2.0-beta2~158 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=dee30a519eed8206e9d81002b34fb703d7f78eda;p=thirdparty%2Fasterisk.git allow manager getvar action to retrieve global variables as well as channel variables (issue #5429) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6763 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/manager.c b/manager.c index 75ebbe157b..bc02a7be40 100755 --- a/manager.c +++ b/manager.c @@ -689,9 +689,9 @@ static int action_setvar(struct mansession *s, struct message *m) } static char mandescr_getvar[] = -"Description: Get the value of a local channel variable.\n" +"Description: Get the value of a global or local channel variable.\n" "Variables: (Names marked with * are required)\n" -" *Channel: Channel to read variable from\n" +" Channel: Channel to read variable from\n" " *Variable: Variable name\n" " ActionID: Optional Action id for message matching.\n"; @@ -704,19 +704,17 @@ static int action_getvar(struct mansession *s, struct message *m) char *varval; char *varval2=NULL; - if (!strlen(name)) { - astman_send_error(s, m, "No channel specified"); - return 0; - } if (!strlen(varname)) { astman_send_error(s, m, "No variable specified"); return 0; } - c = ast_get_channel_by_name_locked(name); - if (!c) { - astman_send_error(s, m, "No such channel"); - return 0; + if (strlen(name)) { + c = ast_get_channel_by_name_locked(name); + if (!c) { + astman_send_error(s, m, "No such channel"); + return 0; + } } varval=pbx_builtin_getvar_helper(c,varname); @@ -724,7 +722,8 @@ static int action_getvar(struct mansession *s, struct message *m) varval2 = ast_strdupa(varval); if (!varval2) varval2 = ""; - ast_mutex_unlock(&c->lock); + if (c) + ast_mutex_unlock(&c->lock); ast_cli(s->fd, "Response: Success\r\n" "Variable: %s\r\nValue: %s\r\n" ,varname,varval2); if (id && !ast_strlen_zero(id))