From cd6920d7e2c3694670b18243ff6d585b79a9fbb9 Mon Sep 17 00:00:00 2001 From: Juliusz Chroboczek Date: Thu, 29 Apr 2021 20:38:06 +0200 Subject: [PATCH] Allow group.API() to fail. --- group/group.go | 18 +++++++++++------- rtpconn/rtpconn.go | 11 +++++++++-- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/group/group.go b/group/group.go index 6cd7d02..54e55ce 100644 --- a/group/group.go +++ b/group/group.go @@ -120,7 +120,7 @@ var groups struct { groups map[string]*Group } -func (g *Group) API() *webrtc.API { +func (g *Group) API() (*webrtc.API, error) { g.mu.Lock() codecs := g.description.Codecs g.mu.Unlock() @@ -198,7 +198,7 @@ func payloadType(codec webrtc.RTPCodecCapability) (webrtc.PayloadType, error) { } } -func APIFromCodecs(codecs []webrtc.RTPCodecCapability) *webrtc.API { +func APIFromCodecs(codecs []webrtc.RTPCodecCapability) (*webrtc.API, error) { s := webrtc.SettingEngine{} s.SetSRTPReplayProtectionWindow(512) if !UseMDNS { @@ -229,7 +229,7 @@ func APIFromCodecs(codecs []webrtc.RTPCodecCapability) *webrtc.API { log.Printf("%v", err) continue } - m.RegisterCodec( + err = m.RegisterCodec( webrtc.RTPCodecParameters{ RTPCodecCapability: webrtc.RTPCodecCapability{ MimeType: codec.MimeType, @@ -242,14 +242,18 @@ func APIFromCodecs(codecs []webrtc.RTPCodecCapability) *webrtc.API { }, tpe, ) + if err != nil { + log.Printf("%v", err) + continue + } } return webrtc.NewAPI( webrtc.WithSettingEngine(s), webrtc.WithMediaEngine(&m), - ) + ), nil } -func APIFromNames(names []string) *webrtc.API { +func APIFromNames(names []string) (*webrtc.API, error) { if len(names) == 0 { names = []string{"vp8", "opus"} } @@ -713,8 +717,8 @@ type Description struct { // The modtime and size of the file. These are used to detect // when a file has changed on disk. - modTime time.Time `json:"-"` - fileSize int64 `json:"-"` + modTime time.Time `json:"-"` + fileSize int64 `json:"-"` // A user-readable description of the group. Description string `json:"description,omitempty"` diff --git a/rtpconn/rtpconn.go b/rtpconn/rtpconn.go index 59fe835..7ed36a1 100644 --- a/rtpconn/rtpconn.go +++ b/rtpconn/rtpconn.go @@ -157,7 +157,10 @@ func (down *rtpDownConnection) getTracks() []*rtpDownTrack { } func newDownConn(c group.Client, id string, remote conn.Up) (*rtpDownConnection, error) { - api := c.Group().API() + api, err := c.Group().API() + if err != nil { + return nil, err + } pc, err := api.NewPeerConnection(*ice.ICEConfiguration()) if err != nil { return nil, err @@ -463,7 +466,11 @@ func newUpConn(c group.Client, id string, label string, offer string) (*rtpUpCon return nil, err } - pc, err := c.Group().API().NewPeerConnection(*ice.ICEConfiguration()) + api, err := c.Group().API() + if err != nil { + return nil, err + } + pc, err := api.NewPeerConnection(*ice.ICEConfiguration()) if err != nil { return nil, err }