aboutsummaryrefslogtreecommitdiffstats
path: root/apps/app_externalivr.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/app_externalivr.c')
-rw-r--r--apps/app_externalivr.c28
1 files changed, 10 insertions, 18 deletions
diff --git a/apps/app_externalivr.c b/apps/app_externalivr.c
index 828f23632..1d08b2646 100644
--- a/apps/app_externalivr.c
+++ b/apps/app_externalivr.c
@@ -265,28 +265,20 @@ static void ast_eivr_getvariable(struct ast_channel *chan, char *data, char *out
static void ast_eivr_setvariable(struct ast_channel *chan, char *data)
{
- char buf[1024];
char *value;
- char *inbuf, *variable;
-
- int j;
+ char *inbuf = ast_strdupa(data), *variable;
- for (j = 1, inbuf = data; ; j++, inbuf = NULL) {
- variable = strsep(&inbuf, ",");
- ast_chan_log(LOG_DEBUG, chan, "Setting up a variable: %s\n", variable);
- if(variable) {
- /* variable contains "varname=value" */
- ast_copy_string(buf, variable, sizeof(buf));
- value = strchr(buf, '=');
- if(!value)
- value="";
- else
- *value++ = '\0';
- pbx_builtin_setvar_helper(chan, buf, value);
+ for (variable = strsep(&inbuf, ","); variable; variable = strsep(&inbuf, ",")) {
+ ast_debug(1, "Setting up a variable: %s\n", variable);
+ /* variable contains "varname=value" */
+ value = strchr(variable, '=');
+ if (!value) {
+ value = "";
+ } else {
+ *value++ = '\0';
}
- else
- break;
+ pbx_builtin_setvar_helper(chan, variable, value);
}
};