summaryrefslogtreecommitdiff
path: root/res/res_musiconhold.c
diff options
context:
space:
mode:
authorRussell Bryant <russell@russellbryant.com>2007-07-13 20:14:23 +0000
committerRussell Bryant <russell@russellbryant.com>2007-07-13 20:14:23 +0000
commitfcd3f8dbea81ca4e5cce2a4501cf15bfe952cfba (patch)
tree6a91510cfb09408299a7bc658caec892c95661b1 /res/res_musiconhold.c
parent432a087ed9deaf67549cc664c6e67e7e4ad9d71f (diff)
Merged revisions 75067 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4 ................ r75067 | russell | 2007-07-13 15:10:40 -0500 (Fri, 13 Jul 2007) | 14 lines Merged revisions 75059 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.2 ........ r75059 | russell | 2007-07-13 15:07:21 -0500 (Fri, 13 Jul 2007) | 6 lines Ensure that adding a user to the list of users of a specific music on hold class is not done at the same time as any of the other operations on this list to prevent list corruption. Using the global moh_data lock for this is not ideal, but it is what is used to protect these lists everywhere else in the module, and I am only changing what is necessary to fix the bug. ........ ................ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@75075 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'res/res_musiconhold.c')
-rw-r--r--res/res_musiconhold.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/res/res_musiconhold.c b/res/res_musiconhold.c
index 13509fcbd..84a44f3b7 100644
--- a/res/res_musiconhold.c
+++ b/res/res_musiconhold.c
@@ -695,7 +695,10 @@ static struct mohdata *mohalloc(struct mohclass *cl)
moh->f.offset = AST_FRIENDLY_OFFSET;
moh->parent = cl;
+
+ AST_RWLIST_WRLOCK(&mohclasses);
AST_LIST_INSERT_HEAD(&cl->members, moh, list);
+ AST_RWLIST_UNLOCK(&mohclasses);
return moh;
}