FS-10079: [mod_conference] Possible lockup when sending many commands to conference at once #resolve
This commit is contained in:
parent
0d0bc3bbd4
commit
fa7f10c02b
|
@ -160,11 +160,11 @@ switch_status_t conference_file_play(conference_obj_t *conference, char *file, u
|
|||
return SWITCH_STATUS_NOTFOUND;
|
||||
}
|
||||
|
||||
switch_mutex_lock(conference->mutex);
|
||||
|
||||
switch_mutex_lock(conference->member_mutex);
|
||||
count = conference->count;
|
||||
switch_mutex_unlock(conference->member_mutex);
|
||||
switch_mutex_unlock(conference->mutex);
|
||||
|
||||
|
||||
if (!count) {
|
||||
return SWITCH_STATUS_FALSE;
|
||||
|
@ -316,7 +316,8 @@ switch_status_t conference_file_play(conference_obj_t *conference, char *file, u
|
|||
fnode->file = switch_core_strdup(fnode->pool, file);
|
||||
|
||||
if (!conference->fnode || (async && !conference->async_fnode)) {
|
||||
conference_video_fnode_check(fnode, -1);
|
||||
fnode->new_fnode = 1;
|
||||
//conference_video_fnode_check(fnode, -1);
|
||||
}
|
||||
|
||||
/* Queue the node */
|
||||
|
|
|
@ -3123,7 +3123,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
|
|||
|
||||
switch_mutex_unlock(conference->member_mutex);
|
||||
} else {
|
||||
|
||||
switch_mutex_lock(conference->file_mutex);
|
||||
if (conference->async_fnode && (conference->async_fnode->canvas_id == canvas->canvas_id || conference->async_fnode->canvas_id == -1)) {
|
||||
if (conference->async_fnode->layer_id > -1) {
|
||||
conference_video_patch_fnode(canvas, conference->async_fnode);
|
||||
|
@ -3139,6 +3139,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
|
|||
conference_video_fnode_check(conference->fnode, canvas->canvas_id);
|
||||
}
|
||||
}
|
||||
switch_mutex_unlock(conference->file_mutex);
|
||||
|
||||
if (!conference->playing_video_file) {
|
||||
for (i = 0; i < canvas->total_layers; i++) {
|
||||
|
|
|
@ -387,6 +387,7 @@ typedef struct conference_file_node {
|
|||
struct conference_obj *conference;
|
||||
char *res_id;
|
||||
int loops;
|
||||
int new_fnode;
|
||||
} conference_file_node_t;
|
||||
|
||||
typedef enum {
|
||||
|
|
Loading…
Reference in New Issue