diff --git a/CHANGES b/CHANGES index dde4ffcb31..6e3a49bdad 100644 --- a/CHANGES +++ b/CHANGES @@ -77,6 +77,13 @@ MixMonitor (mixed) recording. The mixed file name argument is optional now as long as at least one recording option is used. +FollowMe +-------------------------- + * Added a new option, l, which will disable local call optimization for + channels involved with the FollowMe thread. Use this option to improve + compatability for a FollowMe call with certain dialplan apps, options, and + functions. + ------------------------------------------------------------------------------ --- Functionality changes from Asterisk 1.6.2 to Asterisk 1.8 ---------------- ------------------------------------------------------------------------------ diff --git a/apps/app_followme.c b/apps/app_followme.c index 8b9f1061b9..c53264b142 100644 --- a/apps/app_followme.c +++ b/apps/app_followme.c @@ -86,6 +86,11 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") + @@ -168,7 +173,8 @@ enum { FOLLOWMEFLAG_RECORDNAME = (1 << 1), FOLLOWMEFLAG_UNREACHABLEMSG = (1 << 2), FOLLOWMEFLAG_DISABLEHOLDPROMPT = (1 << 3), - FOLLOWMEFLAG_NOANSWER = (1 << 4) + FOLLOWMEFLAG_NOANSWER = (1 << 4), + FOLLOWMEFLAG_DISABLEOPTIMIZATION = (1 << 5), }; AST_APP_OPTIONS(followme_opts, { @@ -177,6 +183,7 @@ AST_APP_OPTIONS(followme_opts, { AST_APP_OPTION('n', FOLLOWMEFLAG_UNREACHABLEMSG ), AST_APP_OPTION('d', FOLLOWMEFLAG_DISABLEHOLDPROMPT ), AST_APP_OPTION('N', FOLLOWMEFLAG_NOANSWER ), + AST_APP_OPTION('l', FOLLOWMEFLAG_DISABLEOPTIMIZATION ), }); static int ynlongest = 0; @@ -838,9 +845,9 @@ static void findmeexec(struct fm_args *tpargs) } if (!strcmp(tpargs->context, "")) - snprintf(dialarg, sizeof(dialarg), "%s", number); + snprintf(dialarg, sizeof(dialarg), "%s%s", number, ast_test_flag(&tpargs->followmeflags, FOLLOWMEFLAG_DISABLEOPTIMIZATION) ? "/n" : ""); else - snprintf(dialarg, sizeof(dialarg), "%s@%s", number, tpargs->context); + snprintf(dialarg, sizeof(dialarg), "%s@%s%s", number, tpargs->context, ast_test_flag(&tpargs->followmeflags, FOLLOWMEFLAG_DISABLEOPTIMIZATION) ? "/n" : ""); tmpuser = ast_calloc(1, sizeof(*tmpuser)); if (!tmpuser) {