mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-04-20 02:04:54 +00:00
FS-10146: [mod_conference] Completely setup conference member before adding them to the conference #resolve
This commit is contained in:
parent
17ff4b41ae
commit
1c0a6725ac
@ -687,20 +687,14 @@ switch_status_t conference_member_add(conference_obj_t *conference, conference_m
|
||||
|
||||
switch_assert(conference != NULL);
|
||||
switch_assert(member != NULL);
|
||||
|
||||
switch_mutex_lock(conference->mutex);
|
||||
switch_mutex_lock(member->audio_in_mutex);
|
||||
switch_mutex_lock(member->audio_out_mutex);
|
||||
lock_member(member);
|
||||
switch_mutex_lock(conference->member_mutex);
|
||||
|
||||
|
||||
if (member->rec) {
|
||||
conference->recording_members++;
|
||||
}
|
||||
|
||||
member->join_time = switch_epoch_time_now(NULL);
|
||||
member->conference = conference;
|
||||
member->next = conference->members;
|
||||
member->energy_level = conference->energy_level;
|
||||
member->score_iir = 0;
|
||||
member->verbose_events = conference->verbose_events;
|
||||
@ -709,9 +703,7 @@ switch_status_t conference_member_add(conference_obj_t *conference, conference_m
|
||||
|
||||
switch_queue_create(&member->dtmf_queue, 100, member->pool);
|
||||
|
||||
conference->members = member;
|
||||
conference_utils_member_set_flag_locked(member, MFLAG_INTREE);
|
||||
switch_mutex_unlock(conference->member_mutex);
|
||||
conference_cdr_add(member);
|
||||
|
||||
|
||||
@ -733,8 +725,6 @@ switch_status_t conference_member_add(conference_obj_t *conference, conference_m
|
||||
}
|
||||
}
|
||||
|
||||
conference_send_presence(conference);
|
||||
|
||||
channel = switch_core_session_get_channel(member->session);
|
||||
|
||||
if (switch_true(switch_channel_get_variable_dup(member->channel, "video_second_screen", SWITCH_FALSE, -1))) {
|
||||
@ -955,10 +945,6 @@ switch_status_t conference_member_add(conference_obj_t *conference, conference_m
|
||||
|
||||
}
|
||||
|
||||
unlock_member(member);
|
||||
switch_mutex_unlock(member->audio_out_mutex);
|
||||
switch_mutex_unlock(member->audio_in_mutex);
|
||||
|
||||
if (conference->la && member->channel) {
|
||||
if (!conference_utils_member_test_flag(member, MFLAG_SECOND_SCREEN)) {
|
||||
cJSON *dvars;
|
||||
@ -1011,6 +997,16 @@ switch_status_t conference_member_add(conference_obj_t *conference, conference_m
|
||||
|
||||
}
|
||||
|
||||
switch_mutex_lock(conference->member_mutex);
|
||||
member->next = conference->members;
|
||||
conference->members = member;
|
||||
switch_mutex_unlock(conference->member_mutex);
|
||||
switch_mutex_unlock(conference->mutex);
|
||||
status = SWITCH_STATUS_SUCCESS;
|
||||
|
||||
|
||||
conference_send_presence(conference);
|
||||
|
||||
|
||||
if (conference_utils_test_flag(conference, CFLAG_POSITIONAL)) {
|
||||
conference_al_gen_arc(conference, NULL);
|
||||
@ -1020,8 +1016,6 @@ switch_status_t conference_member_add(conference_obj_t *conference, conference_m
|
||||
conference_event_send_rfc(conference);
|
||||
conference_event_send_json(conference);
|
||||
|
||||
switch_mutex_unlock(conference->mutex);
|
||||
status = SWITCH_STATUS_SUCCESS;
|
||||
|
||||
conference_video_find_floor(member, SWITCH_TRUE);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user