mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-12 15:45:18 +00:00
Update channel drivers to use module referencing so that unloading them while in use will not result in crashes. (issue #8897 reported by junky)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@51788 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -164,9 +164,6 @@ struct gtalk_container {
|
||||
|
||||
static const char desc[] = "Gtalk Channel";
|
||||
|
||||
static int usecnt = 0;
|
||||
AST_MUTEX_DEFINE_STATIC(usecnt_lock);
|
||||
|
||||
static int global_capability = AST_FORMAT_ULAW | AST_FORMAT_ALAW | AST_FORMAT_GSM | AST_FORMAT_H263;
|
||||
|
||||
AST_MUTEX_DEFINE_STATIC(gtalklock); /*!< Protect the interface list (of gtalk_pvt's) */
|
||||
@@ -953,9 +950,7 @@ static struct ast_channel *gtalk_new(struct gtalk *client, struct gtalk_pvt *i,
|
||||
if (!ast_strlen_zero(client->musicclass))
|
||||
ast_string_field_set(tmp, musicclass, client->musicclass);
|
||||
i->owner = tmp;
|
||||
ast_mutex_lock(&usecnt_lock);
|
||||
usecnt++;
|
||||
ast_mutex_unlock(&usecnt_lock);
|
||||
ast_module_ref(ast_module_info->self);
|
||||
ast_copy_string(tmp->context, client->context, sizeof(tmp->context));
|
||||
ast_copy_string(tmp->exten, i->exten, sizeof(tmp->exten));
|
||||
/* Don't use ast_set_callerid() here because it will
|
||||
@@ -1467,9 +1462,7 @@ static int gtalk_hangup(struct ast_channel *ast)
|
||||
ast_mutex_unlock(&p->lock);
|
||||
|
||||
gtalk_free_pvt(client, p);
|
||||
ast_mutex_lock(&usecnt_lock);
|
||||
usecnt--;
|
||||
ast_mutex_unlock(&usecnt_lock);
|
||||
ast_module_unref(ast_module_info->self);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user