diff options
author | file <file@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-02-16 18:08:34 +0000 |
---|---|---|
committer | file <file@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-02-16 18:08:34 +0000 |
commit | 91a0c3bd917e2d716b6217224bc78a2b3f1510c1 (patch) | |
tree | b65ac4e06dd4f9dbb20f58c76d257dc19369a62b /res | |
parent | ca614c38fa69d42b980c58b4eb1aec2e07228e46 (diff) |
Allow the user to specify where to enable the respective features for when a parked call is picked up. (ie: transfers and parking)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@54910 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'res')
-rw-r--r-- | res/res_features.c | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/res/res_features.c b/res/res_features.c index 06647c904..8c0600e48 100644 --- a/res/res_features.c +++ b/res/res_features.c @@ -1830,14 +1830,14 @@ static int park_exec(struct ast_channel *chan, void *data) ast_verbose(VERBOSE_PREFIX_3 "Channel %s connected to parked call %d\n", chan->name, park); memset(&config, 0, sizeof(struct ast_bridge_config)); - if (parkedcalltransfers) { + if ((parkedcalltransfers == AST_FEATURE_FLAG_BYCALLEE) || (parkedcalltransfers == AST_FEATURE_FLAG_BYBOTH)) ast_set_flag(&(config.features_callee), AST_FEATURE_REDIRECT); + if ((parkedcalltransfers == AST_FEATURE_FLAG_BYCALLER) || (parkedcalltransfers == AST_FEATURE_FLAG_BYBOTH)) ast_set_flag(&(config.features_caller), AST_FEATURE_REDIRECT); - } - if (parkedcallreparking) { + if ((parkedcallreparking == AST_FEATURE_FLAG_BYCALLEE) || (parkedcallreparking == AST_FEATURE_FLAG_BYBOTH)) ast_set_flag(&(config.features_callee), AST_FEATURE_PARKCALL); + if ((parkedcallreparking == AST_FEATURE_FLAG_BYCALLER) || (parkedcallreparking == AST_FEATURE_FLAG_BYBOTH)) ast_set_flag(&(config.features_caller), AST_FEATURE_PARKCALL); - } res = ast_bridge_call(chan, peer, &config); pbx_builtin_setvar_helper(chan, "PARKEDCHANNEL", peer->name); @@ -2162,9 +2162,19 @@ static int load_config(void) } else if (!strcasecmp(var->name, "parkinghints")) { parkaddhints = ast_true(var->value); } else if (!strcasecmp(var->name, "parkedcalltransfers")) { - parkedcalltransfers = ast_true(var->value); + if (!strcasecmp(var->value, "both")) + parkedcalltransfers = AST_FEATURE_FLAG_BYBOTH; + else if (!strcasecmp(var->value, "caller")) + parkedcalltransfers = AST_FEATURE_FLAG_BYCALLER; + else if (!strcasecmp(var->value, "callee")) + parkedcalltransfers = AST_FEATURE_FLAG_BYCALLEE; } else if (!strcasecmp(var->name, "parkedcallreparking")) { - parkedcallreparking = ast_true(var->value); + if (!strcasecmp(var->value, "both")) + parkedcalltransfers = AST_FEATURE_FLAG_BYBOTH; + else if (!strcasecmp(var->value, "caller")) + parkedcalltransfers = AST_FEATURE_FLAG_BYCALLER; + else if (!strcasecmp(var->value, "callee")) + parkedcalltransfers = AST_FEATURE_FLAG_BYCALLEE; } else if (!strcasecmp(var->name, "adsipark")) { adsipark = ast_true(var->value); } else if (!strcasecmp(var->name, "transferdigittimeout")) { |