summaryrefslogtreecommitdiff
path: root/main/manager.c
diff options
context:
space:
mode:
authorRichard Mudgett <rmudgett@digium.com>2013-04-10 23:03:30 +0000
committerRichard Mudgett <rmudgett@digium.com>2013-04-10 23:03:30 +0000
commiteb2d144195474ee904de1a3aed5f401f54bed012 (patch)
tree598b6d0d5213e78745d4c3aa1f1c8d0b3ca2996e /main/manager.c
parentff7ecd3dbfbf4e471ec45edc0a339c9dec350897 (diff)
* Fix unlocked accesses to feature_list. The feature_list is now also
protected by the features_lock. * Made all calls to ast_find_call_feature() have the features_lock held. * Fixed set_config_flags() to actually use find_group() to look for feature groups in DYNAMIC_FEATURES. The code originally assumed all feature groups were listed in DYNAMIC_FEATURES. * Make everyone use ast_rdlock_call_features(), ast_unlock_call_features(), and new ast_wrlock_call_features() instead of directly calling the rwlock API on features_lock. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@385277 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/manager.c')
-rw-r--r--main/manager.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/main/manager.c b/main/manager.c
index f5314af54..dd920e26d 100644
--- a/main/manager.c
+++ b/main/manager.c
@@ -3902,7 +3902,10 @@ static int action_atxfer(struct mansession *s, const struct message *m)
return 0;
}
- if (!(atxfer_feature = ast_find_call_feature("atxfer"))) {
+ ast_rdlock_call_features();
+ atxfer_feature = ast_find_call_feature("atxfer");
+ ast_unlock_call_features();
+ if (!atxfer_feature) {
astman_send_error(s, m, "No attended transfer feature found");
return 0;
}