mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-02 19:16:15 +00:00
func_lock: Fix requesters counter in error paths.
In two places we bail out with failure after we've already incremented the requesters counter, if this occured then it would effectively result in unload to wait indefinitely, thus preventing clean shutdown. Change-Id: I362a6c0dc424f736d4a9c733d818e72d19675283 Signed-off-by: Jaco Kroon <jaco@uls.co.za>
This commit is contained in:
committed by
George Joseph
parent
b4e77b7f10
commit
5008d9fee1
@@ -268,7 +268,13 @@ static int get_lock(struct ast_channel *chan, char *lockname, int trylock)
|
||||
|
||||
if (!clframe) {
|
||||
if (unloading) {
|
||||
ast_log(LOG_ERROR,
|
||||
"Busy unloading. %sLOCK will fail.\n",
|
||||
trylock ? "TRY" : "");
|
||||
/* Don't bother */
|
||||
ast_mutex_lock(¤t->mutex);
|
||||
current->requesters--;
|
||||
ast_mutex_unlock(¤t->mutex);
|
||||
AST_LIST_UNLOCK(list);
|
||||
return -1;
|
||||
}
|
||||
@@ -277,6 +283,9 @@ static int get_lock(struct ast_channel *chan, char *lockname, int trylock)
|
||||
ast_log(LOG_ERROR,
|
||||
"Unable to allocate channel lock frame. %sLOCK will fail.\n",
|
||||
trylock ? "TRY" : "");
|
||||
ast_mutex_lock(¤t->mutex);
|
||||
current->requesters--;
|
||||
ast_mutex_unlock(¤t->mutex);
|
||||
AST_LIST_UNLOCK(list);
|
||||
return -1;
|
||||
}
|
||||
|
Reference in New Issue
Block a user