From 52b0cb912b19d80bb3c44af6049efe206b27015d Mon Sep 17 00:00:00 2001 From: Olle Johansson Date: Mon, 25 Jan 2010 20:27:59 +0000 Subject: [PATCH] Merged revisions 242850 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ........ 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: https://origsvn.digium.com/svn/asterisk/trunk@242904 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- main/manager.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/main/manager.c b/main/manager.c index 3af61b37f7..8f01ea2786 100644 --- a/main/manager.c +++ b/main/manager.c @@ -2800,7 +2800,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; @@ -2812,15 +2813,21 @@ 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) { c = ast_channel_unref(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; }