diff options
author | oej <oej@f38db490-d61c-443f-a65b-d21fe96a405b> | 2010-01-25 20:56:13 +0000 |
---|---|---|
committer | oej <oej@f38db490-d61c-443f-a65b-d21fe96a405b> | 2010-01-25 20:56:13 +0000 |
commit | d8eb2b5c0aac0b74024201a66df30b9692795354 (patch) | |
tree | 21adde2803843fee74926149d3ba32a2ee1a0086 /main/manager.c | |
parent | 51188e459840af4dfb1af49f654c95feefa7be04 (diff) |
Merged revisions 242904 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk
................
r242904 | oej | 2010-01-25 21:27:59 +0100 (Mån, 25 Jan 2010) | 10 lines
Merged revisions 242850 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r242850 | oej | 2010-01-25 21:03:38 +0100 (Mån, 25 Jan 2010) | 2 lines
Report error when writing to functions returns error in AMI setvar action
........
................
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.2@242917 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main/manager.c')
-rw-r--r-- | main/manager.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/main/manager.c b/main/manager.c index 0e8ef0012..f444af4b3 100644 --- a/main/manager.c +++ b/main/manager.c @@ -1806,7 +1806,8 @@ static int action_setvar(struct mansession *s, const struct message *m) const char *name = astman_get_header(m, "Channel"); const char *varname = astman_get_header(m, "Variable"); const char *varval = astman_get_header(m, "Value"); - + int res = 0; + if (ast_strlen_zero(varname)) { astman_send_error(s, m, "No variable specified"); return 0; @@ -1819,14 +1820,20 @@ static int action_setvar(struct mansession *s, const struct message *m) return 0; } } - - pbx_builtin_setvar_helper(c, varname, S_OR(varval, "")); + if (varname[strlen(varname)-1] == ')') { + char *function = ast_strdupa(varname); + res = ast_func_write(c, function, varval); + } else { + pbx_builtin_setvar_helper(c, varname, S_OR(varval, "")); + } if (c) ast_channel_unlock(c); - - astman_send_ack(s, m, "Variable Set"); - + if (res == 0) { + astman_send_ack(s, m, "Variable Set"); + } else { + astman_send_error(s, m, "Variable not set"); + } return 0; } |