diff options
-rw-r--r-- | main/freeswitch/0003-mod_conference_no_hangup.patch | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/main/freeswitch/0003-mod_conference_no_hangup.patch b/main/freeswitch/0003-mod_conference_no_hangup.patch new file mode 100644 index 0000000000..577ca8e1a4 --- /dev/null +++ b/main/freeswitch/0003-mod_conference_no_hangup.patch @@ -0,0 +1,27 @@ +diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c +index 572fdf0..d62d114 100644 +--- a/src/mod/applications/mod_conference/mod_conference.c ++++ b/src/mod/applications/mod_conference/mod_conference.c +@@ -1482,13 +1482,15 @@ static void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, v + if (!switch_test_flag(imember, MFLAG_NOCHANNEL)) { + channel = switch_core_session_get_channel(imember->session); + +- /* add this little bit to preserve the bridge cause code in case of an early media call that */ +- /* never answers */ +- if (switch_test_flag(conference, CFLAG_ANSWERED)) { +- switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); +- } else { +- /* put actual cause code from outbound channel hangup here */ +- switch_channel_hangup(channel, conference->bridge_hangup_cause); ++ if (!switch_false(switch_channel_get_variable(channel, "hangup_after_conference"))) { ++ /* add this little bit to preserve the bridge cause code in case of an early media call that */ ++ /* never answers */ ++ if (switch_test_flag(conference, CFLAG_ANSWERED)) { ++ switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); ++ } else { ++ /* put actual cause code from outbound channel hangup here */ ++ switch_channel_hangup(channel, conference->bridge_hangup_cause); ++ } + } + } + |