summaryrefslogtreecommitdiff
path: root/main/loader.c
diff options
context:
space:
mode:
authorTerry Wilson <twilson@digium.com>2012-02-22 21:22:43 +0000
committerTerry Wilson <twilson@digium.com>2012-02-22 21:22:43 +0000
commit0cc38858dd00300f3593856559eea48941c382cb (patch)
tree8f40a20a35c3081351f9d9e2e6eae4fb1d9f5acb /main/loader.c
parent25a9b03cd18e3ad602bcefde85d947035b195018 (diff)
Track module use count for res_calendar
If the res_calendar module was followed immediately by one of the calendar tech modules and "core stop gracefully" was run, Asterisk would crash. This patch adds use count tracking for res_calendar so that it is unloaded after the tech modules when shutting down gracefully. It is now not possible to unload all the of the calendar modules via "module unload res_calednar.so", but it is still possible to unload them all via "module unload -h res_calendar.so". Review: https://reviewboard.asterisk.org/r/1752/ ........ Merged revisions 356291 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 356297 from http://svn.asterisk.org/svn/asterisk/branches/10 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@356314 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/loader.c')
-rw-r--r--main/loader.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/main/loader.c b/main/loader.c
index f9b2de943..44046ae2a 100644
--- a/main/loader.c
+++ b/main/loader.c
@@ -239,7 +239,9 @@ void __ast_module_user_hangup_all(struct ast_module *mod)
AST_LIST_LOCK(&mod->users);
while ((u = AST_LIST_REMOVE_HEAD(&mod->users, entry))) {
- ast_softhangup(u->chan, AST_SOFTHANGUP_APPUNLOAD);
+ if (u->chan) {
+ ast_softhangup(u->chan, AST_SOFTHANGUP_APPUNLOAD);
+ }
ast_atomic_fetchadd_int(&mod->usecount, -1);
ast_free(u);
}