]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Change api for pbx_builtin_setvar to actually return error code if a function can...
authorOlle Johansson <oej@edvina.net>
Mon, 25 Jan 2010 21:13:20 +0000 (21:13 +0000)
committerOlle Johansson <oej@edvina.net>
Mon, 25 Jan 2010 21:13:20 +0000 (21:13 +0000)
This patch removes code that was duplicated from pbx.c to manager.c
in order to prevent API change in released versions of Asterisk.

There are propably also other places that would benefit from reading the
return code and react if a function returns error codes on writing a value into it.

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@242919 65c4cc65-6c06-0410-ace0-fbb531ad65f3

include/asterisk/pbx.h
main/manager.c
main/pbx.c

index 50a18a6240058508d14303c7377324d3072c0acc..cfbb2754b8b20e2d19740b3a6db51f9a64470093 100644 (file)
@@ -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.
index 8f01ea2786c2af8fe24830320e08cfc972ba7d63..2d1fa476d5a772be3c16390c055f74a4fd4d3bb9 100644 (file)
@@ -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);
index 1b6e498f50b30d6a5b7172d817409dc266565f66..c13feffb7b2e66ffb5d5e3e89d6c005ff408dfd9 100644 (file)
@@ -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)