From b4240c45059d9b4d8c8119fae8a3ccc1a5969377 Mon Sep 17 00:00:00 2001 From: Juliusz Chroboczek Date: Thu, 4 Feb 2021 21:03:17 +0100 Subject: [PATCH] Don't reuse API between peer connections. This turns out to be incorrect when a MediaEngine is attached. --- group/group.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/group/group.go b/group/group.go index 451e93f..22f15a1 100644 --- a/group/group.go +++ b/group/group.go @@ -64,7 +64,6 @@ const ( type Group struct { name string - api *webrtc.API mu sync.Mutex description *description @@ -122,7 +121,11 @@ var groups struct { } func (g *Group) API() *webrtc.API { - return g.api + g.mu.Lock() + codecs := g.description.Codecs + g.mu.Unlock() + + return APIFromNames(codecs) } func codecFromName(name string) (webrtc.RTPCodecCapability, error) { @@ -291,7 +294,6 @@ func Add(name string, desc *description) (*Group, error) { description: desc, clients: make(map[string]Client), timestamp: time.Now(), - api: APIFromNames(desc.Codecs), } autoLockKick(g, g.getClientsUnlocked(nil)) groups.groups[name] = g @@ -319,7 +321,6 @@ func Add(name string, desc *description) (*Group, error) { return nil, err } g.description = desc - g.api = APIFromNames(desc.Codecs) autoLockKick(g, g.getClientsUnlocked(nil)) return g, nil