mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-12 15:45:18 +00:00
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
This commit is contained in:
@@ -2569,7 +2569,11 @@ static inline int ast_fdisset(struct pollfd *pfds, int fd, int maximum, int *sta
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*! \brief Retrieves the current T38 state of a channel */
|
||||
/*!
|
||||
* \brief Retrieves the current T38 state of a channel
|
||||
*
|
||||
* \note Absolutely _NO_ channel locks should be held before calling this function.
|
||||
*/
|
||||
static inline enum ast_t38_state ast_channel_get_t38_state(struct ast_channel *chan)
|
||||
{
|
||||
enum ast_t38_state state = T38_STATE_UNAVAILABLE;
|
||||
|
Reference in New Issue
Block a user