diff options
author | Matthew Jordan <mjordan@digium.com> | 2014-09-21 01:16:05 +0000 |
---|---|---|
committer | Matthew Jordan <mjordan@digium.com> | 2014-09-21 01:16:05 +0000 |
commit | 64a9e5f0011d0f6dcfccfaa1ed9e3d65eaf80bdd (patch) | |
tree | 77280c90c28fb545ce74ce4b2a0bd34799e78657 /main/channel.c | |
parent | 9bf039346af4f08fe949ec72c5ae110d74eb3264 (diff) |
main/channel: Unlock channel in off-nominal path
In r423414 (13) / r423415 (trunk), an API call that determines if a format
capability structure is empty was added. This returns true if the format
capability structure is completely empty or "none". A check for this was added
in channel.c's set_format call. Unfortunately, when this check was true, it
returned from the function while still holding the channel lock. This caused
the CDR unit tests - which have a tendency to create channels with no formats -
to deadlock. Whoops.
This patch unlocks the channel on the off-nominal path.
........
Merged revisions 423641 from http://svn.asterisk.org/svn/asterisk/branches/13
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423642 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/channel.c')
-rw-r--r-- | main/channel.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/main/channel.c b/main/channel.c index 477bc815b..9100f2671 100644 --- a/main/channel.c +++ b/main/channel.c @@ -5328,6 +5328,7 @@ static int set_format(struct ast_channel *chan, struct ast_format_cap *cap_set, cap_native = ast_channel_nativeformats(chan); if (ast_format_cap_empty(cap_native)) { + ast_channel_unlock(chan); ast_log(LOG_ERROR, "Unable to set format because channel %s supports no formats\n", ast_channel_name(chan)); return -1; |