Missed one conversion to comma delimiter (thanks, Juggie) and add documentation on the
authorTilghman Lesher <tilghman@meg.abyt.es>
Mon, 23 Jul 2007 20:27:26 +0000 (20:27 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Mon, 23 Jul 2007 20:27:26 +0000 (20:27 +0000)
change to the Local channel name.

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

UPGRADE.txt
res/res_agi.c

index 1e76c41..16b1777 100644 (file)
@@ -96,3 +96,7 @@ Channel Drivers:
   user has not configured the automon feature, the normal "415 Unsupported media type"
   is returned, and nothing is done.
 
   user has not configured the automon feature, the normal "415 Unsupported media type"
   is returned, and nothing is done.
 
+* chan_local.c: the comma delimiter inside the channel name has been changed to a
+  semicolon, in order to make the Local channel driver compatible with the comma
+  delimiter change in applications.
+
index 13fe232..8b04910 100644 (file)
@@ -2014,8 +2014,12 @@ static int agi_exec_full(struct ast_channel *chan, void *data, int enhanced, int
 {
        enum agi_result res;
        struct ast_module_user *u;
 {
        enum agi_result res;
        struct ast_module_user *u;
-       char *argv[MAX_ARGS], buf[2048] = "", *tmp = buf, *stringp;
-       int argc = 0, fds[2], efd = -1, pid;
+       char buf[2048] = "", *tmp = buf;
+       int fds[2], efd = -1, pid;
+       AST_DECLARE_APP_ARGS(args,
+               AST_APP_ARG(arg)[MAX_ARGS];
+       );
+       __attribute__((unused))char *empty = NULL;
        AGI agi;
 
        if (ast_strlen_zero(data)) {
        AGI agi;
 
        if (ast_strlen_zero(data)) {
@@ -2025,9 +2029,8 @@ static int agi_exec_full(struct ast_channel *chan, void *data, int enhanced, int
        ast_copy_string(buf, data, sizeof(buf));
 
        memset(&agi, 0, sizeof(agi));
        ast_copy_string(buf, data, sizeof(buf));
 
        memset(&agi, 0, sizeof(agi));
-        while ((stringp = strsep(&tmp, "|")) && argc < MAX_ARGS-1)
-               argv[argc++] = stringp;
-       argv[argc] = NULL;
+       AST_STANDARD_APP_ARGS(args, tmp);
+       args.argv[args.argc] = NULL;
 
        u = ast_module_user_add(chan);
 #if 0
 
        u = ast_module_user_add(chan);
 #if 0
@@ -2039,13 +2042,13 @@ static int agi_exec_full(struct ast_channel *chan, void *data, int enhanced, int
                }
        }
 #endif
                }
        }
 #endif
-       res = launch_script(argv[0], argv, fds, enhanced ? &efd : NULL, &pid);
+       res = launch_script(args.argv[0], args.argv, fds, enhanced ? &efd : NULL, &pid);
        if (res == AGI_RESULT_SUCCESS) {
                int status = 0;
                agi.fd = fds[1];
                agi.ctrl = fds[0];
                agi.audio = efd;
        if (res == AGI_RESULT_SUCCESS) {
                int status = 0;
                agi.fd = fds[1];
                agi.ctrl = fds[0];
                agi.audio = efd;
-               res = run_agi(chan, argv[0], &agi, pid, &status, dead, argc, argv);
+               res = run_agi(chan, args.argv[0], &agi, pid, &status, dead, args.argc, args.argv);
                /* If the fork'd process returns non-zero, set AGISTATUS to FAILURE */
                if (res == AGI_RESULT_SUCCESS && status)
                        res = AGI_RESULT_FAILURE;
                /* If the fork'd process returns non-zero, set AGISTATUS to FAILURE */
                if (res == AGI_RESULT_SUCCESS && status)
                        res = AGI_RESULT_FAILURE;