summaryrefslogtreecommitdiff
path: root/main/features.c
diff options
context:
space:
mode:
Diffstat (limited to 'main/features.c')
-rw-r--r--main/features.c28
1 files changed, 19 insertions, 9 deletions
diff --git a/main/features.c b/main/features.c
index a4977f258..5e544cc26 100644
--- a/main/features.c
+++ b/main/features.c
@@ -4227,22 +4227,32 @@ static void set_bridge_features_on_config(struct ast_bridge_config *config, cons
}
for (feature = features; *feature; feature++) {
- switch (*feature) {
- case 'T' :
+ struct ast_flags *party;
+ char this_feature;
+
+ if (isupper(*feature)) {
+ party = &(config->features_caller);
+ } else {
+ party = &(config->features_callee);
+ }
+
+ this_feature = tolower(*feature);
+
+ switch (this_feature) {
case 't' :
- ast_set_flag(&(config->features_caller), AST_FEATURE_REDIRECT);
+ ast_set_flag(party, AST_FEATURE_REDIRECT);
break;
- case 'K' :
case 'k' :
- ast_set_flag(&(config->features_caller), AST_FEATURE_PARKCALL);
+ ast_set_flag(party, AST_FEATURE_PARKCALL);
break;
- case 'H' :
case 'h' :
- ast_set_flag(&(config->features_caller), AST_FEATURE_DISCONNECT);
+ ast_set_flag(party, AST_FEATURE_DISCONNECT);
break;
- case 'W' :
case 'w' :
- ast_set_flag(&(config->features_caller), AST_FEATURE_AUTOMON);
+ ast_set_flag(party, AST_FEATURE_AUTOMON);
+ break;
+ case 'x' :
+ ast_set_flag(party, AST_FEATURE_AUTOMIXMON);
break;
default :
ast_log(LOG_WARNING, "Skipping unknown feature code '%c'\n", *feature);