aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main/freeswitch/0003-mod_conference_no_hangup.patch27
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);
++ }
+ }
+ }
+