Guest User

Untitled

a guest
Jun 19th, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.91 KB | None | 0 0
  1. diff --git a/res/res_stasis.c b/res/res_stasis.c
  2. index a60ec5fdec..2aceadb409 100644
  3. --- a/res/res_stasis.c
  4. +++ b/res/res_stasis.c
  5. @@ -517,14 +517,23 @@ static struct ast_channel *prepare_bridge_moh_channel(void)
  6. /*! Provides the moh channel with a thread so it can actually play its music */
  7. static void *moh_channel_thread(void *data)
  8. {
  9. - struct ast_channel *moh_channel = data;
  10. + struct stasis_app_bridge_channel_wrapper *moh_wrapper = data;
  11. + struct ast_channel *moh_channel = ast_channel_get_by_name(moh_wrapper->channel_id);
  12.  
  13. while (!ast_safe_sleep(moh_channel, 1000)) {
  14. }
  15.  
  16. + ao2_lock(app_bridges_moh);
  17. + ao2_unlink_flags(app_bridges_moh, moh_wrapper, OBJ_NOLOCK);
  18. +
  19. ast_moh_stop(moh_channel);
  20. ast_hangup(moh_channel);
  21.  
  22. + ao2_unlock(app_bridges_moh);
  23. +
  24. return NULL;
  25. }
  26.  
  27. @@ -591,7 +600,7 @@ static struct ast_channel *bridge_moh_create(struct ast_bridge *bridge)
  28. return NULL;
  29. }
  30.  
  31. - if (ast_pthread_create_detached(&threadid, NULL, moh_channel_thread, chan)) {
  32. + if (ast_pthread_create_detached(&threadid, NULL, moh_channel_thread, new_wrapper)) {
  33. ast_log(LOG_ERROR, "Failed to create channel thread. Abandoning MOH channel creation.\n");
  34. ao2_unlink_flags(app_bridges_moh, new_wrapper, OBJ_NOLOCK);
  35. ast_hangup(chan);
  36. @@ -608,15 +617,19 @@ struct ast_channel *stasis_app_bridge_moh_channel(struct ast_bridge *bridge)
  37.  
  38. ao2_lock(app_bridges_moh);
  39. moh_wrapper = ao2_find(app_bridges_moh, bridge->uniqueid, OBJ_SEARCH_KEY | OBJ_NOLOCK);
  40. if (!moh_wrapper) {
  41. chan = bridge_moh_create(bridge);
  42. }
  43. - ao2_unlock(app_bridges_moh);
  44.  
  45. if (moh_wrapper) {
  46. chan = ast_channel_get_by_name(moh_wrapper->channel_id);
  47. ao2_ref(moh_wrapper, -1);
  48. }
  49. + ao2_unlock(app_bridges_moh);
  50.  
  51. return chan;
  52. }
Add Comment
Please, Sign In to add comment