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:
parent
a611a0cd42
commit
6bd741b77d
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue