Missed one conversion to comma delimiter (thanks, Juggie) and add documentation on the

change to the Local channel name.


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@76704 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.6.0
Tilghman Lesher 18 years ago
parent 55b1ee298e
commit a1fdc1c769

@ -96,3 +96,7 @@ Channel Drivers:
user has not configured the automon feature, the normal "415 Unsupported media type" user has not configured the automon feature, the normal "415 Unsupported media type"
is returned, and nothing is done. 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.

@ -2014,8 +2014,12 @@ static int agi_exec_full(struct ast_channel *chan, void *data, int enhanced, int
{ {
enum agi_result res; enum agi_result res;
struct ast_module_user *u; struct ast_module_user *u;
char *argv[MAX_ARGS], buf[2048] = "", *tmp = buf, *stringp; char buf[2048] = "", *tmp = buf;
int argc = 0, fds[2], efd = -1, pid; int fds[2], efd = -1, pid;
AST_DECLARE_APP_ARGS(args,
AST_APP_ARG(arg)[MAX_ARGS];
);
__attribute__((unused))char *empty = NULL;
AGI agi; AGI agi;
if (ast_strlen_zero(data)) { 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)); ast_copy_string(buf, data, sizeof(buf));
memset(&agi, 0, sizeof(agi)); memset(&agi, 0, sizeof(agi));
while ((stringp = strsep(&tmp, "|")) && argc < MAX_ARGS-1) AST_STANDARD_APP_ARGS(args, tmp);
argv[argc++] = stringp; args.argv[args.argc] = NULL;
argv[argc] = NULL;
u = ast_module_user_add(chan); u = ast_module_user_add(chan);
#if 0 #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) { if (res == AGI_RESULT_SUCCESS) {
int status = 0; int status = 0;
agi.fd = fds[1]; agi.fd = fds[1];
agi.ctrl = fds[0]; agi.ctrl = fds[0];
agi.audio = efd; 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 the fork'd process returns non-zero, set AGISTATUS to FAILURE */
if (res == AGI_RESULT_SUCCESS && status) if (res == AGI_RESULT_SUCCESS && status)
res = AGI_RESULT_FAILURE; res = AGI_RESULT_FAILURE;

Loading…
Cancel
Save