res_fax: Fix deadlock in ast_channel_get_t38_state().
authorRichard Mudgett <rmudgett@digium.com>
Tue, 23 Aug 2016 16:02:35 +0000 (11:02 -0500)
committerRichard Mudgett <rmudgett@digium.com>
Thu, 25 Aug 2016 22:11:51 +0000 (17:11 -0500)
commit5eb6cb969f440200835a6e818a4f69f7a77f280f
tree882b7199c19e63e3659a39cd2a321d5a5b774a65
parent277a2d667a51b4f683392304f0d1be47b53b1db2
res_fax: Fix deadlock in ast_channel_get_t38_state().

ast_channel_get_t38_state() calls ast_channel_queryoption() with
AST_OPTION_T38_STATE.  If the passed in channel is a local channel then a
deadlock can happen if a channel lock is held when called.

* Made ast_channel_get_t38_state() callers not hold a channel lock before
calling.

* Update ast_channel_get_t38_state() doxygen to note that no channel locks
can be held when calling the function.

ASTERISK-26203 #close
Reported by: Etienne Lessard

ASTERISK-24822 #close
Reported by: David Brillert

ASTERISK-22732 #close
Reported by: Richard Mudgett

Change-Id: I49fd76fa9af628b4198009b5c0b82c8b03681214
include/asterisk/channel.h
res/res_fax.c