summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES10
-rw-r--r--UPGRADE.txt3
-rw-r--r--main/features.c28
3 files changed, 32 insertions, 9 deletions
diff --git a/CHANGES b/CHANGES
index 4da4fd9b1..6a8322afe 100644
--- a/CHANGES
+++ b/CHANGES
@@ -31,6 +31,16 @@ AMI (Asterisk Manager Interface)
'Manager Show Command' now displays the privileges needed for using a given
manager command instead.
+Features
+-------------------
+ * The BRIDGE_FEATURES channel variable would previously only set features for
+ the calling party and would set this feature regardless of whether the
+ feature was in caps or in lowercase. Use of a caps feature for a letter
+ will now apply the feature to the calling party while use of a lowercase
+ letter will apply that feature to the called party.
+
+ * Add support for automixmonitor to the BRIDGE_FEATURES channel variable.
+
Logging
-------------------
* When performing queue pause/unpause on an interface without specifying an
diff --git a/UPGRADE.txt b/UPGRADE.txt
index 66eb5aaea..2c1a155e0 100644
--- a/UPGRADE.txt
+++ b/UPGRADE.txt
@@ -64,6 +64,9 @@ Dialplan:
- Asterisk has always had code to ignore dash '-' characters that are not
part of a character set in the dialplan extensions. The code now
consistently ignores these characters when matching dialplan extensions.
+ - BRIDGE_FEATURES channel variable is now casesensitive for feature letter codes.
+ Uppercase variants apply them to the calling party while lowercase variants
+ apply them to the called party.
From 10 to 11:
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);