MFLAG_NOCHANNEL = (1 << 5),
MFLAG_INTREE = (1 << 6),
MFLAG_WASTE_BANDWIDTH = (1 << 7),
- MFLAG_FLUSH_BUFFER = (1 << 8)
+ MFLAG_FLUSH_BUFFER = (1 << 8),
+ MFLAG_ENDCONF = (1 << 9)
} member_flag_t;
typedef enum {
member->sh = NULL;
}
+ if (switch_test_flag(member, MFLAG_ENDCONF)) {
+ switch_set_flag_locked(member->conference, CFLAG_DESTRUCT);
+ }
+
member->conference = NULL;
if (!switch_test_flag(member, MFLAG_NOCHANNEL)) {
*f &= ~MFLAG_CAN_HEAR;
} else if (strstr(flags, "waste")) {
*f |= MFLAG_WASTE_BANDWIDTH;
+ } else if (strstr(flags, "endconf")) {
+ *f |= MFLAG_ENDCONF;
}
}
return;
}
+ if ((flags_str = strstr(mydata, flags_prefix))) {
+ char *p;
+
+ *flags_str = '\0';
+ flags_str += strlen(flags_prefix);
+ if ((p = strchr(flags_str, '}'))) {
+ *p = '\0';
+ }
+ }
/* is this a bridging conference ? */
if (!strncasecmp(mydata, bridge_prefix, strlen(bridge_prefix))) {
/* Install our Signed Linear codec so we get the audio in that format */
switch_core_session_set_read_codec(member.session, &member.read_codec);
- if ((flags_str = strstr(mydata, flags_prefix))) {
- char *p;
-
- *flags_str = '\0';
- flags_str += strlen(flags_prefix);
- if ((p = strchr(flags_str, '}'))) {
- *p = '\0';
- }
- }
mflags = conference->mflags;
set_mflags(flags_str, &mflags);