summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorRichard Mudgett <rmudgett@digium.com>2016-08-23 11:02:35 -0500
committerRichard Mudgett <rmudgett@digium.com>2016-08-25 17:13:53 -0500
commit8b4b2500ee010e9d6baf9454475d337d45c7c368 (patch)
tree9e2b37266e55b5272cd7dcb206396188f9e627f1 /include
parente8d4f400226b9cb3110f287e15ca9521fc8af1e7 (diff)
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
Diffstat (limited to 'include')
-rw-r--r--include/asterisk/channel.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/include/asterisk/channel.h b/include/asterisk/channel.h
index 4cc210d5a..e42307dd9 100644
--- a/include/asterisk/channel.h
+++ b/include/asterisk/channel.h
@@ -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;