diff --git a/plugins/janus_audiobridge.c b/plugins/janus_audiobridge.c index 6db9051931..af5d941482 100644 --- a/plugins/janus_audiobridge.c +++ b/plugins/janus_audiobridge.c @@ -2313,14 +2313,14 @@ void janus_audiobridge_destroy_session(janus_plugin_session *handle, int *error) return; } -static void janus_audiobridge_notify_participants(janus_audiobridge_participant *participant, json_t *msg) { +static void janus_audiobridge_notify_participants(janus_audiobridge_participant *participant, json_t *msg, gboolean notify_source_participant) { /* participant->room->participants_mutex has to be locked. */ GHashTableIter iter; gpointer value; g_hash_table_iter_init(&iter, participant->room->participants); while(!participant->room->destroyed && g_hash_table_iter_next(&iter, NULL, &value)) { janus_audiobridge_participant *p = value; - if(p && p->session && p != participant) { + if(p && p->session && (p != participant || notify_source_participant)) { JANUS_LOG(LOG_VERB, "Notifying participant %s (%s)\n", p->user_id_str, p->display ? p->display : "??"); int ret = gateway->push_event(p->session->handle, &janus_audiobridge_plugin, NULL, msg, NULL); JANUS_LOG(LOG_VERB, " >> %d (%s)\n", ret, janus_get_api_error(ret)); @@ -4298,7 +4298,7 @@ static json_t *janus_audiobridge_process_synchronous_request(janus_audiobridge_s json_object_set_new(event, "room", string_ids ? json_string(audiobridge->room_id_str) : json_integer(audiobridge->room_id)); json_object_set_new(event, "file_id", json_string(file_id)); - janus_audiobridge_notify_participants(p, event); + janus_audiobridge_notify_participants(p, event, TRUE); json_decref(event); /* Also notify event handlers */ if(notify_events && gateway->events_is_enabled()) { @@ -4661,7 +4661,8 @@ void janus_audiobridge_incoming_rtp(janus_plugin_session *handle, janus_plugin_r json_integer(participant->room ? participant->room->room_id : 0)); json_object_set_new(event, "id", string_ids ? json_string(participant->user_id_str) : json_integer(participant->user_id)); - janus_audiobridge_notify_participants(participant, event); + /* Notify the speaker this event is related to as well */ + janus_audiobridge_notify_participants(participant, event, TRUE); json_decref(event); janus_mutex_unlock(&participant->room->mutex); /* Also notify event handlers */ @@ -6399,7 +6400,7 @@ static void *janus_audiobridge_mixer_thread(void *data) { json_object_set_new(event, "room", string_ids ? json_string(audiobridge->room_id_str) : json_integer(audiobridge->room_id)); json_object_set_new(event, "file_id", json_string(p->user_id_str)); - janus_audiobridge_notify_participants(p, event); + janus_audiobridge_notify_participants(p, event, TRUE); json_decref(event); /* Also notify event handlers */ if(notify_events && gateway->events_is_enabled()) { @@ -6427,7 +6428,7 @@ static void *janus_audiobridge_mixer_thread(void *data) { json_object_set_new(event, "room", string_ids ? json_string(audiobridge->room_id_str) : json_integer(audiobridge->room_id)); json_object_set_new(event, "file_id", json_string(p->user_id_str)); - janus_audiobridge_notify_participants(p, event); + janus_audiobridge_notify_participants(p, event, TRUE); json_decref(event); janus_mutex_unlock_nodebug(&audiobridge->mutex); /* Also notify event handlers */