From 9d12147d97bcddbdff6087d17e5cbcbba8f86ce7 Mon Sep 17 00:00:00 2001 From: David Zhao Date: Tue, 21 Jun 2022 23:04:49 -0700 Subject: [PATCH] Temporary workaround for clients not able to handle combined updates (#777) See: https://github.com/livekit/client-sdk-js/pull/275 --- pkg/rtc/room.go | 5 ++++- pkg/rtc/room_test.go | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/pkg/rtc/room.go b/pkg/rtc/room.go index f6169afa4..5bba9e299 100644 --- a/pkg/rtc/room.go +++ b/pkg/rtc/room.go @@ -849,6 +849,7 @@ func (r *Room) pushAndDequeueUpdates(pi *livekit.ParticipantInfo, isImmediate bo var updates []*livekit.ParticipantInfo identity := livekit.ParticipantIdentity(pi.Identity) existing := r.batchedUpdates[identity] + shouldSend := isImmediate || pi.IsPublisher if existing != nil { if pi.Sid != existing.Sid { @@ -859,10 +860,12 @@ func (r *Room) pushAndDequeueUpdates(pi *livekit.ParticipantInfo, isImmediate bo } else if pi.Version < existing.Version { // out of order update return nil + } else if shouldSend { + updates = append(updates, existing) } } - if isImmediate || pi.IsPublisher { + if shouldSend { // include any queued update, and return delete(r.batchedUpdates, identity) updates = append(updates, pi) diff --git a/pkg/rtc/room_test.go b/pkg/rtc/room_test.go index ba2cc8a7c..b70336938 100644 --- a/pkg/rtc/room_test.go +++ b/pkg/rtc/room_test.go @@ -295,7 +295,7 @@ func TestPushAndDequeueUpdates(t *testing.T) { name: "when switching to publisher, queue is cleared", pi: publisher1v2, existing: subscriber1v1, - expected: []*livekit.ParticipantInfo{publisher1v2}, + expected: []*livekit.ParticipantInfo{subscriber1v1, publisher1v2}, validate: func(t *testing.T, rm *Room, updates []*livekit.ParticipantInfo) { require.Empty(t, rm.batchedUpdates) },