From 84123800ef6fa6de6045bdf2481b5f96d53ecb89 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 7 Apr 2014 20:51:51 +0500 Subject: [PATCH] send muted members as recvonly on RFC4575 data --- .../mod_conference/mod_conference.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c index 6b1c1021eb..7b7f7bbada 100644 --- a/src/mod/applications/mod_conference/mod_conference.c +++ b/src/mod/applications/mod_conference/mod_conference.c @@ -605,6 +605,22 @@ static void conference_cdr_add(conference_member_t *member) } + +static const char *audio_flow(conference_member_t *member) +{ + const char *flow = "sendrecv"; + + if (!switch_test_flag(member, MFLAG_CAN_SPEAK)) { + flow = "recvonly"; + } + + if (member->session && switch_channel_test_flag(switch_core_session_get_channel(member->session), CF_HOLD)) { + flow = "sendonly"; + } + + return flow; +} + static void conference_cdr_rejected(conference_obj_t *conference, switch_channel_t *channel, cdr_reject_reason_t reason) { conference_cdr_reject_t *rp; @@ -837,7 +853,7 @@ static char *conference_rfc4579_render(conference_obj_t *conference, switch_even if (!(x_tag4 = switch_xml_add_child_d(x_tag3, "status", off4++))) { abort(); } - switch_xml_set_txt_d(x_tag4, switch_channel_test_flag(channel, CF_HOLD) ? "sendonly" : "sendrecv"); + switch_xml_set_txt_d(x_tag4, audio_flow(np->member)); if (switch_channel_test_flag(channel, CF_VIDEO)) {