diff options
-rw-r--r-- | CHANGES | 10 | ||||
-rw-r--r-- | UPGRADE.txt | 3 | ||||
-rw-r--r-- | main/features.c | 28 |
3 files changed, 32 insertions, 9 deletions
@@ -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); |