* 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
This commit is contained in:
Richard Mudgett
2013-04-10 23:03:30 +00:00
parent ff7ecd3dbf
commit eb2d144195
2 changed files with 80 additions and 66 deletions

View File

@@ -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;
}