<p>Alexander Traud has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.asterisk.org/c/asterisk/+/17356">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">bridge_channel: Fix for Doxygen.<br><br>ASTERISK-29736<br><br>Change-Id: Ia5370289e6526001a6b52754b533bcea1a9d7e5c<br>---<br>M include/asterisk/bridge_channel.h<br>M include/asterisk/bridge_channel_internal.h<br>M main/bridge_channel.c<br>3 files changed, 14 insertions(+), 84 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/56/17356/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/asterisk/bridge_channel.h b/include/asterisk/bridge_channel.h</span><br><span>index fb2fd4f..21090ec 100644</span><br><span>--- a/include/asterisk/bridge_channel.h</span><br><span>+++ b/include/asterisk/bridge_channel.h</span><br><span>@@ -33,9 +33,9 @@</span><br><span> * In general, anywhere else it is unsafe to use this API. Care should be</span><br><span> * taken when using this API to ensure that the locking order remains</span><br><span> * correct. The locking order must be:</span><br><span style="color: hsl(0, 100%, 40%);">- * \arg The \ref \c ast_bridge</span><br><span style="color: hsl(0, 100%, 40%);">- * \arg The \ref \c ast_bridge_channel</span><br><span style="color: hsl(0, 100%, 40%);">- * \arg The \ref \c ast_channel</span><br><span style="color: hsl(120, 100%, 40%);">+ * \arg The \ref ast_bridge "\c ast_bridge"</span><br><span style="color: hsl(120, 100%, 40%);">+ * \arg The \ref ast_bridge_channel "\c ast_bridge_channel"</span><br><span style="color: hsl(120, 100%, 40%);">+ * \arg The \ref ast_channel "\c ast_channel"</span><br><span> *</span><br><span> * \author Joshua Colp <jcolp@digium.com></span><br><span> * \author Richard Mudgett <rmudgett@digium.com></span><br><span>@@ -225,8 +225,6 @@</span><br><span> * \brief Lock the bridge_channel.</span><br><span> *</span><br><span> * \param bridge_channel What to lock</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> #define ast_bridge_channel_lock(bridge_channel) _ast_bridge_channel_lock(bridge_channel, __FILE__, __PRETTY_FUNCTION__, __LINE__, #bridge_channel)</span><br><span> static inline void _ast_bridge_channel_lock(struct ast_bridge_channel *bridge_channel, const char *file, const char *function, int line, const char *var)</span><br><span>@@ -238,8 +236,6 @@</span><br><span> * \brief Unlock the bridge_channel.</span><br><span> *</span><br><span> * \param bridge_channel What to unlock</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> #define ast_bridge_channel_unlock(bridge_channel) _ast_bridge_channel_unlock(bridge_channel, __FILE__, __PRETTY_FUNCTION__, __LINE__, #bridge_channel)</span><br><span> static inline void _ast_bridge_channel_unlock(struct ast_bridge_channel *bridge_channel, const char *file, const char *function, int line, const char *var)</span><br><span>@@ -261,8 +257,6 @@</span><br><span> *</span><br><span> * \note The bridge_channel->bridge pointer changes because of a</span><br><span> * bridge-merge/channel-move operation between bridges.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> void ast_bridge_channel_lock_bridge(struct ast_bridge_channel *bridge_channel);</span><br><span> </span><br><span>@@ -472,8 +466,6 @@</span><br><span> * Empty if default MOH class.</span><br><span> *</span><br><span> * \note This is intended to be called by bridge hooks.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> void ast_bridge_channel_run_app(struct ast_bridge_channel *bridge_channel, const char *app_name, const char *app_args, const char *moh_class);</span><br><span> </span><br><span>@@ -518,8 +510,6 @@</span><br><span> *</span><br><span> * \param bridge_channel Which channel to play the file on</span><br><span> * \param playfile Sound filename to play.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> typedef void (*ast_bridge_custom_play_fn)(struct ast_bridge_channel *bridge_channel, const char *playfile);</span><br><span> </span><br><span>@@ -535,8 +525,6 @@</span><br><span> * Empty if default MOH class.</span><br><span> *</span><br><span> * \note This is intended to be called by bridge hooks.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> void ast_bridge_channel_playfile(struct ast_bridge_channel *bridge_channel, ast_bridge_custom_play_fn custom_play, const char *playfile, const char *moh_class);</span><br><span> </span><br><span>@@ -606,8 +594,6 @@</span><br><span> * \param payload_size Size of the payload if payload is non-NULL. A number otherwise.</span><br><span> *</span><br><span> * \note The payload MUST NOT have any resources that need to be freed.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> typedef void (*ast_bridge_custom_callback_fn)(struct ast_bridge_channel *bridge_channel, const void *payload, size_t payload_size);</span><br><span> </span><br><span>@@ -685,8 +671,6 @@</span><br><span> *</span><br><span> * \note This is intended to be called by bridge hooks and the</span><br><span> * bridge channel thread.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> void ast_bridge_channel_kick(struct ast_bridge_channel *bridge_channel, int cause);</span><br><span> </span><br><span>@@ -710,7 +694,6 @@</span><br><span> *</span><br><span> * \param bridge_channel Channel that received a DTMF digit.</span><br><span> * \param digit DTMF digit to add to collected digits or 0 for timeout event.</span><br><span style="color: hsl(0, 100%, 40%);">- * \param clear_digits clear the digits array prior to calling hooks</span><br><span> *</span><br><span> * \note Neither the bridge nor the bridge_channel locks should be held</span><br><span> * when entering this function.</span><br><span>@@ -721,8 +704,6 @@</span><br><span> * \note This is intended to be called by non-DTMF bridge hooks and the bridge</span><br><span> * channel thread. Calling from a DTMF bridge hook can potentially cause</span><br><span> * unbounded recursion.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> void ast_bridge_channel_feature_digit(struct ast_bridge_channel *bridge_channel, int digit);</span><br><span> </span><br><span>@@ -747,8 +728,6 @@</span><br><span> * \param bridge_channel Channel to map</span><br><span> *</span><br><span> * \note The bridge_channel's bridge must be locked prior to calling this function.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> void ast_bridge_channel_stream_map(struct ast_bridge_channel *bridge_channel);</span><br><span> </span><br><span>diff --git a/include/asterisk/bridge_channel_internal.h b/include/asterisk/bridge_channel_internal.h</span><br><span>index ba71e9f..082ed1e 100644</span><br><span>--- a/include/asterisk/bridge_channel_internal.h</span><br><span>+++ b/include/asterisk/bridge_channel_internal.h</span><br><span>@@ -30,8 +30,8 @@</span><br><span> * by other members of the Bridging API.</span><br><span> *</span><br><span> * See Also:</span><br><span style="color: hsl(120, 100%, 40%);">+ * \arg \ref AstBridging</span><br><span> * \arg \ref AstCREDITS</span><br><span style="color: hsl(0, 100%, 40%);">- * \arg \ref Ast</span><br><span> */</span><br><span> </span><br><span> /*!</span><br><span>@@ -91,8 +91,6 @@</span><br><span> * \param bridge_channel Channel that owes events to the original bridge.</span><br><span> *</span><br><span> * \note On entry, the orig_bridge is already locked.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> void bridge_channel_settle_owed_events(struct ast_bridge *orig_bridge, struct ast_bridge_channel *bridge_channel);</span><br><span> </span><br><span>@@ -102,8 +100,6 @@</span><br><span> * \since 13.17.0</span><br><span> *</span><br><span> * \param bridge_channel Channel that the deferred frames should be pulled from and queued to.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> void bridge_channel_queue_deferred_frames(struct ast_bridge_channel *bridge_channel);</span><br><span> </span><br><span>@@ -156,18 +152,15 @@</span><br><span> * \param bridge_channel Channel to pull.</span><br><span> *</span><br><span> * \note On entry, bridge_channel->bridge is already locked.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> void bridge_channel_internal_pull(struct ast_bridge_channel *bridge_channel);</span><br><span> </span><br><span> /*!</span><br><span style="color: hsl(120, 100%, 40%);">+ * \internal</span><br><span> * \brief Signal imparting threads to wake up.</span><br><span> * \since 13.9.0</span><br><span> *</span><br><span> * \param chan Channel imparted that we need to signal.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> void bridge_channel_impart_signal(struct ast_channel *chan);</span><br><span> </span><br><span>diff --git a/main/bridge_channel.c b/main/bridge_channel.c</span><br><span>index 7e058af..ee14b93 100644</span><br><span>--- a/main/bridge_channel.c</span><br><span>+++ b/main/bridge_channel.c</span><br><span>@@ -113,7 +113,7 @@</span><br><span> static AST_RWLIST_HEAD_STATIC(sync_structs, bridge_sync);</span><br><span> </span><br><span> /*!</span><br><span style="color: hsl(0, 100%, 40%);">- * \brief initialize a synchronous bridge object.</span><br><span style="color: hsl(120, 100%, 40%);">+ * \brief Initialize a synchronous bridge object.</span><br><span> *</span><br><span> * This both initializes the structure and adds it to the list of</span><br><span> * synchronization structures.</span><br><span>@@ -414,8 +414,6 @@</span><br><span> * \param src Channel to get accountcode from.</span><br><span> *</span><br><span> * \note Both channels are already locked.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> static void channel_fill_empty_peeraccount(struct ast_channel *dest, struct ast_channel *src)</span><br><span> {</span><br><span>@@ -437,8 +435,6 @@</span><br><span> * \param src Channel to get peeraccount from.</span><br><span> *</span><br><span> * \note Both channels are already locked.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> static void channel_fill_empty_accountcode(struct ast_channel *dest, struct ast_channel *src)</span><br><span> {</span><br><span>@@ -460,8 +456,6 @@</span><br><span> * \param c1 Second bridge channel to update.</span><br><span> *</span><br><span> * \note Both channels are already locked.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> static void channel_set_empty_accountcodes(struct ast_channel *c0, struct ast_channel *c1)</span><br><span> {</span><br><span>@@ -483,8 +477,6 @@</span><br><span> * \param src Channel to get accountcode from.</span><br><span> *</span><br><span> * \note Both channels are already locked.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> static void channel_update_peeraccount(struct ast_channel *dest, struct ast_channel *src)</span><br><span> {</span><br><span>@@ -505,8 +497,6 @@</span><br><span> * \param c1 Second channel to update.</span><br><span> *</span><br><span> * \note Both channels are already locked.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> static void channel_update_peeraccounts(struct ast_channel *c0, struct ast_channel *c1)</span><br><span> {</span><br><span>@@ -523,8 +513,6 @@</span><br><span> * \param swap Channel being replaced by the joining channel. May be NULL.</span><br><span> *</span><br><span> * \note The bridge must be locked prior to calling this function.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> static void bridge_channel_update_accountcodes_joining(struct ast_bridge_channel *joining, struct ast_bridge_channel *swap)</span><br><span> {</span><br><span>@@ -570,8 +558,6 @@</span><br><span> * \param leaving Channel leaving the bridge. (Has already been removed actually)</span><br><span> *</span><br><span> * \note The bridge must be locked prior to calling this function.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> static void bridge_channel_update_accountcodes_leaving(struct ast_bridge_channel *leaving)</span><br><span> {</span><br><span>@@ -780,8 +766,6 @@</span><br><span> * \param bridge_channel Channel that owes events to the bridge.</span><br><span> *</span><br><span> * \note On entry, the bridge_channel->bridge is already locked.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> static void bridge_channel_cancel_owed_events(struct ast_bridge_channel *bridge_channel)</span><br><span> {</span><br><span>@@ -848,8 +832,6 @@</span><br><span> * \param bridge_channel Channel to suspend.</span><br><span> *</span><br><span> * \note This function assumes bridge_channel->bridge is locked.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> void bridge_channel_internal_suspend_nolock(struct ast_bridge_channel *bridge_channel)</span><br><span> {</span><br><span>@@ -869,8 +851,6 @@</span><br><span> * \brief Suspend a channel from a bridge.</span><br><span> *</span><br><span> * \param bridge_channel Channel to suspend.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> static void bridge_channel_suspend(struct ast_bridge_channel *bridge_channel)</span><br><span> {</span><br><span>@@ -886,8 +866,6 @@</span><br><span> * \param bridge_channel Channel to unsuspend.</span><br><span> *</span><br><span> * \note This function assumes bridge_channel->bridge is locked.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> void bridge_channel_internal_unsuspend_nolock(struct ast_bridge_channel *bridge_channel)</span><br><span> {</span><br><span>@@ -912,8 +890,6 @@</span><br><span> * \brief Unsuspend a channel from a bridge.</span><br><span> *</span><br><span> * \param bridge_channel Channel to unsuspend.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> static void bridge_channel_unsuspend(struct ast_bridge_channel *bridge_channel)</span><br><span> {</span><br><span>@@ -1268,8 +1244,6 @@</span><br><span> *</span><br><span> * \param bridge_channel Which channel to run the application on.</span><br><span> * \param data Action frame data to run the application.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> static void bridge_channel_run_app(struct ast_bridge_channel *bridge_channel, struct bridge_run_app *data)</span><br><span> {</span><br><span>@@ -1362,8 +1336,6 @@</span><br><span> *</span><br><span> * \param bridge_channel Which channel to play a file on.</span><br><span> * \param payload Action frame payload to play a file.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> static void bridge_channel_playfile(struct ast_bridge_channel *bridge_channel, struct bridge_playfile *payload)</span><br><span> {</span><br><span>@@ -1434,8 +1406,6 @@</span><br><span> *</span><br><span> * \param bridge_channel Which channel to call the callback on.</span><br><span> * \param data Action frame data to call the callback.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> static void bridge_channel_do_callback(struct ast_bridge_channel *bridge_channel, struct bridge_custom_callback *data)</span><br><span> {</span><br><span>@@ -1564,8 +1534,6 @@</span><br><span> * \since 12.0.0</span><br><span> *</span><br><span> * \param bridge_channel Channel to run expired intervals on.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> static void bridge_channel_handle_interval(struct ast_bridge_channel *bridge_channel)</span><br><span> {</span><br><span>@@ -1877,8 +1845,6 @@</span><br><span> * \since 12.8.0</span><br><span> *</span><br><span> * \param bridge_channel Channel to check expired interdigit timer on.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> static void bridge_channel_handle_feature_timeout(struct ast_bridge_channel *bridge_channel)</span><br><span> {</span><br><span>@@ -1922,7 +1888,10 @@</span><br><span> ao2_iterator_destroy(&iter);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/*! \brief Internal function that plays back DTMF on a bridge channel */</span><br><span style="color: hsl(120, 100%, 40%);">+/*!</span><br><span style="color: hsl(120, 100%, 40%);">+ * \internal</span><br><span style="color: hsl(120, 100%, 40%);">+ * \brief Play back DTMF on a bridge channel</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span> static void bridge_channel_dtmf_stream(struct ast_bridge_channel *bridge_channel, const char *dtmf)</span><br><span> {</span><br><span> ast_debug(1, "Playing DTMF stream '%s' out to %p(%s)\n",</span><br><span>@@ -2061,8 +2030,6 @@</span><br><span> * \param bridge_channel Channel to execute the action on.</span><br><span> * \param action What to do.</span><br><span> * \param data data from the action.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> static void bridge_channel_handle_action(struct ast_bridge_channel *bridge_channel,</span><br><span> enum bridge_channel_action_type action, void *data)</span><br><span>@@ -2130,8 +2097,6 @@</span><br><span> * \param bridge_channel Channel causing the check.</span><br><span> *</span><br><span> * \note On entry, bridge_channel->bridge is already locked.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> static void bridge_channel_dissolve_check(struct ast_bridge_channel *bridge_channel)</span><br><span> {</span><br><span>@@ -2324,8 +2289,6 @@</span><br><span> *</span><br><span> * \param bridge_channel Channel to execute the control frame action on.</span><br><span> * \param fr Control frame to handle.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> static void bridge_channel_handle_control(struct ast_bridge_channel *bridge_channel, struct ast_frame *fr)</span><br><span> {</span><br><span>@@ -2403,8 +2366,6 @@</span><br><span> *</span><br><span> * \param chan Channel to send text to</span><br><span> * \param f The frame containing the text data to send</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> static void sendtext_safe(struct ast_channel *chan, const struct ast_frame *f)</span><br><span> {</span><br><span>@@ -2438,8 +2399,6 @@</span><br><span> * \since 12.0.0</span><br><span> *</span><br><span> * \param bridge_channel Channel to write outgoing frame.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> static void bridge_channel_handle_write(struct ast_bridge_channel *bridge_channel)</span><br><span> {</span><br><span>@@ -2544,7 +2503,10 @@</span><br><span> bridge_frame_free(fr);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/*! \brief Internal function to handle DTMF from a channel */</span><br><span style="color: hsl(120, 100%, 40%);">+/*!</span><br><span style="color: hsl(120, 100%, 40%);">+ * \internal</span><br><span style="color: hsl(120, 100%, 40%);">+ * \brief Handle DTMF from a channel</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span> static struct ast_frame *bridge_handle_dtmf(struct ast_bridge_channel *bridge_channel, struct ast_frame *frame)</span><br><span> {</span><br><span> struct ast_bridge_features *features = bridge_channel->features;</span><br><span>@@ -2802,8 +2764,6 @@</span><br><span> * \param bridge_channel Channel to wait.</span><br><span> *</span><br><span> * \note Each channel does writing/reading in their own thread.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> static void bridge_channel_wait(struct ast_bridge_channel *bridge_channel)</span><br><span> {</span><br><span>@@ -2866,8 +2826,6 @@</span><br><span> *</span><br><span> * \param bridge_channel Which channel is involved.</span><br><span> * \param type Specified join/leave event.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span> */</span><br><span> static void bridge_channel_event_join_leave(struct ast_bridge_channel *bridge_channel, enum ast_bridge_hook_type type)</span><br><span> {</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.asterisk.org/c/asterisk/+/17356">change 17356</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.asterisk.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.asterisk.org/c/asterisk/+/17356"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: asterisk </div>
<div style="display:none"> Gerrit-Branch: 18 </div>
<div style="display:none"> Gerrit-Change-Id: Ia5370289e6526001a6b52754b533bcea1a9d7e5c </div>
<div style="display:none"> Gerrit-Change-Number: 17356 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Alexander Traud <pabstraud@compuserve.com> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>