diff -Nru freeswitch-1.2.5.3/src/mod/applications/mod_commands/mod_commands.c.orig freeswitch-1.2.5.3/src/mod/applications/mod_commands/mod_commands.c --- freeswitch-1.2.5.3/src/mod/applications/mod_commands/mod_commands.c.orig 2012-12-07 15:21:47.000000000 +0000 +++ freeswitch-1.2.5.3/src/mod/applications/mod_commands/mod_commands.c 2013-03-31 06:21:04.140453102 +0000 @@ -3951,6 +3951,19 @@ } #define ORIGINATE_SYNTAX " |&() [] [] [] [] []" +void _remove_ampersand_space(char *cmd) +{ + char *c; + + // find ampersand, if any + for(c=cmd; *c; c++) if (*c=='&') break; + if (!*c) return; + + *c=' '; // remove ampersand for now + c++; // move to next char + for(;*c && isspace(*c); c++); + *(--c)='&'; //add it back to the last char +} SWITCH_STANDARD_API(originate_function) { switch_channel_t *caller_channel; @@ -3974,6 +3987,9 @@ } mycmd = strdup(cmd); + // remove space after '&" + _remove_ampersand_space(mycmd); + switch_assert(mycmd); argc = switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0])));