<p>Moritz Fain has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.asterisk.org/9297">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Fixed locking issue in stasis_app_bridge_moh_channel<br><br>Fixed an issue that resulted in "Allocation failed" when<br>using ARI to start playing MOH on a bridge.<br><br>ASTERISK-26094 #close<br><br>Change-Id: Ibff479e167b3320c68aaabfada7e1d0ef7bd548c<br>---<br>M res/res_stasis.c<br>1 file changed, 9 insertions(+), 3 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/97/9297/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">diff --git a/res/res_stasis.c b/res/res_stasis.c<br>index a60ec5f..5eaed98 100644<br>--- a/res/res_stasis.c<br>+++ b/res/res_stasis.c<br>@@ -517,13 +517,19 @@<br> /*! Provides the moh channel with a thread so it can actually play its music */<br> static void *moh_channel_thread(void *data)<br> {<br>-        struct ast_channel *moh_channel = data;<br>+      struct stasis_app_bridge_channel_wrapper *moh_wrapper = data;<br>+        struct ast_channel *moh_channel = ast_channel_get_by_name(moh_wrapper->channel_id);<br> <br>     while (!ast_safe_sleep(moh_channel, 1000)) {<br>  }<br> <br>+ ao2_lock(app_bridges_moh);<br>+   ao2_unlink_flags(app_bridges_moh, moh_wrapper, OBJ_NOLOCK);<br>+<br>        ast_moh_stop(moh_channel);<br>    ast_hangup(moh_channel);<br>+<br>+  ao2_unlock(app_bridges_moh);<br> <br>       return NULL;<br> }<br>@@ -591,7 +597,7 @@<br>                 return NULL;<br>  }<br> <br>- if (ast_pthread_create_detached(&threadid, NULL, moh_channel_thread, chan)) {<br>+    if (ast_pthread_create_detached(&threadid, NULL, moh_channel_thread, new_wrapper)) {<br>              ast_log(LOG_ERROR, "Failed to create channel thread. Abandoning MOH channel creation.\n");<br>          ao2_unlink_flags(app_bridges_moh, new_wrapper, OBJ_NOLOCK);<br>           ast_hangup(chan);<br>@@ -611,12 +617,12 @@<br>      if (!moh_wrapper) {<br>           chan = bridge_moh_create(bridge);<br>     }<br>-    ao2_unlock(app_bridges_moh);<br> <br>       if (moh_wrapper) {<br>            chan = ast_channel_get_by_name(moh_wrapper->channel_id);<br>           ao2_ref(moh_wrapper, -1);<br>     }<br>+    ao2_unlock(app_bridges_moh);<br> <br>       return chan;<br> }<br></pre><p>To view, visit <a href="https://gerrit.asterisk.org/9297">change 9297</a>. To unsubscribe, 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/9297"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: asterisk </div>
<div style="display:none"> Gerrit-Branch: 15 </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: Ibff479e167b3320c68aaabfada7e1d0ef7bd548c </div>
<div style="display:none"> Gerrit-Change-Number: 9297 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Moritz Fain <moritz@fain.io> </div>