aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/asterisk/pbx.h4
-rw-r--r--main/manager.c8
-rw-r--r--main/pbx.c6
3 files changed, 8 insertions, 10 deletions
diff --git a/include/asterisk/pbx.h b/include/asterisk/pbx.h
index 50a18a624..cfbb2754b 100644
--- a/include/asterisk/pbx.h
+++ b/include/asterisk/pbx.h
@@ -990,8 +990,10 @@ void pbx_builtin_pushvar_helper(struct ast_channel *chan, const char *name, cons
* \brief Add a variable to the channel variable stack, removing the most recently set value for the same name.
* \note Will lock the channel. May also be used to set a channel dialplan function to a particular value.
* \see ast_func_write
+ * \return -1 if the dialplan function fails to be set
+ * \version 1.8 changed the function to return an error code
*/
-void pbx_builtin_setvar_helper(struct ast_channel *chan, const char *name, const char *value);
+int pbx_builtin_setvar_helper(struct ast_channel *chan, const char *name, const char *value);
/*!
* \brief Retrieve the value of a builtin variable or variable from the channel variable stack.
diff --git a/main/manager.c b/main/manager.c
index 8f01ea278..2d1fa476d 100644
--- a/main/manager.c
+++ b/main/manager.c
@@ -2813,12 +2813,8 @@ static int action_setvar(struct mansession *s, const struct message *m)
return 0;
}
}
- 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, ""));
- }
+
+ res = pbx_builtin_setvar_helper(c, varname, S_OR(varval, ""));
if (c) {
c = ast_channel_unref(c);
diff --git a/main/pbx.c b/main/pbx.c
index 1b6e498f5..c13feffb7 100644
--- a/main/pbx.c
+++ b/main/pbx.c
@@ -9407,7 +9407,7 @@ void pbx_builtin_pushvar_helper(struct ast_channel *chan, const char *name, cons
ast_rwlock_unlock(&globalslock);
}
-void pbx_builtin_setvar_helper(struct ast_channel *chan, const char *name, const char *value)
+int pbx_builtin_setvar_helper(struct ast_channel *chan, const char *name, const char *value)
{
struct ast_var_t *newvariable;
struct varshead *headp;
@@ -9416,8 +9416,7 @@ void pbx_builtin_setvar_helper(struct ast_channel *chan, const char *name, const
if (name[strlen(name) - 1] == ')') {
char *function = ast_strdupa(name);
- ast_func_write(chan, function, value);
- return;
+ return ast_func_write(chan, function, value);
}
if (chan) {
@@ -9462,6 +9461,7 @@ void pbx_builtin_setvar_helper(struct ast_channel *chan, const char *name, const
ast_channel_unlock(chan);
else
ast_rwlock_unlock(&globalslock);
+ return 0;
}
int pbx_builtin_setvar(struct ast_channel *chan, const char *data)