Merged revisions 104596 via svnmerge from

https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r104596 | file | 2008-02-27 13:07:33 -0400 (Wed, 27 Feb 2008) | 4 lines

Use the lock (which already existed, it just wasn't used) on the updaters list to protect the contents instead of the overall module list lock.
(closes issue #12080)
Reported by: ChaseVenters

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@104597 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Joshua Colp
2008-02-27 17:12:08 +00:00
parent 1281c05afa
commit b868d44342

View File

@@ -930,10 +930,10 @@ void ast_update_use_count(void)
resource has changed */ resource has changed */
struct loadupdate *m; struct loadupdate *m;
AST_LIST_LOCK(&module_list); AST_LIST_LOCK(&updaters);
AST_LIST_TRAVERSE(&updaters, m, entry) AST_LIST_TRAVERSE(&updaters, m, entry)
m->updater(); m->updater();
AST_LIST_UNLOCK(&module_list); AST_LIST_UNLOCK(&updaters);
} }
int ast_update_module_list(int (*modentry)(const char *module, const char *description, int usecnt, const char *like), int ast_update_module_list(int (*modentry)(const char *module, const char *description, int usecnt, const char *like),
@@ -978,9 +978,9 @@ int ast_loader_register(int (*v)(void))
return -1; return -1;
tmp->updater = v; tmp->updater = v;
AST_LIST_LOCK(&module_list); AST_LIST_LOCK(&updaters);
AST_LIST_INSERT_HEAD(&updaters, tmp, entry); AST_LIST_INSERT_HEAD(&updaters, tmp, entry);
AST_LIST_UNLOCK(&module_list); AST_LIST_UNLOCK(&updaters);
return 0; return 0;
} }
@@ -989,7 +989,7 @@ int ast_loader_unregister(int (*v)(void))
{ {
struct loadupdate *cur; struct loadupdate *cur;
AST_LIST_LOCK(&module_list); AST_LIST_LOCK(&updaters);
AST_LIST_TRAVERSE_SAFE_BEGIN(&updaters, cur, entry) { AST_LIST_TRAVERSE_SAFE_BEGIN(&updaters, cur, entry) {
if (cur->updater == v) { if (cur->updater == v) {
AST_LIST_REMOVE_CURRENT(entry); AST_LIST_REMOVE_CURRENT(entry);
@@ -997,7 +997,7 @@ int ast_loader_unregister(int (*v)(void))
} }
} }
AST_LIST_TRAVERSE_SAFE_END; AST_LIST_TRAVERSE_SAFE_END;
AST_LIST_UNLOCK(&module_list); AST_LIST_UNLOCK(&updaters);
return cur ? 0 : -1; return cur ? 0 : -1;
} }