diff options
author | Richard Mudgett <rmudgett@digium.com> | 2013-04-10 23:03:30 +0000 |
---|---|---|
committer | Richard Mudgett <rmudgett@digium.com> | 2013-04-10 23:03:30 +0000 |
commit | eb2d144195474ee904de1a3aed5f401f54bed012 (patch) | |
tree | 598b6d0d5213e78745d4c3aa1f1c8d0b3ca2996e /main/manager.c | |
parent | ff7ecd3dbfbf4e471ec45edc0a339c9dec350897 (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.c | 5 |
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; } |