diff --git a/internal/webrtc/client.go b/internal/webrtc/client.go index 5fbf2175b..7a9fbba8d 100644 --- a/internal/webrtc/client.go +++ b/internal/webrtc/client.go @@ -190,6 +190,12 @@ func whepClient(url string) (core.Producer, error) { return nil, err } + defer func() { + if err != nil { + _ = pc.Close() + } + }() + prod := webrtc.NewConn(pc) prod.Mode = core.ModeActiveProducer prod.Protocol = "http" diff --git a/internal/webrtc/client_creality.go b/internal/webrtc/client_creality.go index 4618044ea..dc50dacb8 100644 --- a/internal/webrtc/client_creality.go +++ b/internal/webrtc/client_creality.go @@ -20,6 +20,12 @@ func crealityClient(url string) (core.Producer, error) { return nil, err } + defer func() { + if err != nil { + _ = pc.Close() + } + }() + prod := webrtc.NewConn(pc) prod.FormatName = "webrtc/creality" prod.Mode = core.ModeActiveProducer diff --git a/internal/webrtc/kinesis.go b/internal/webrtc/kinesis.go index 8bfaeb9b3..d35d69dd8 100644 --- a/internal/webrtc/kinesis.go +++ b/internal/webrtc/kinesis.go @@ -68,6 +68,12 @@ func kinesisClient( return nil, err } + defer func() { + if err != nil { + _ = pc.Close() + } + }() + // protect from sending ICE candidate before Offer var sendOffer core.Waiter diff --git a/internal/webrtc/milestone.go b/internal/webrtc/milestone.go index fe1cedcf2..f3f3c8483 100644 --- a/internal/webrtc/milestone.go +++ b/internal/webrtc/milestone.go @@ -192,6 +192,12 @@ func milestoneClient(rawURL string, query url.Values) (core.Producer, error) { return nil, err } + defer func() { + if err != nil { + _ = pc.Close() + } + }() + prod := webrtc.NewConn(pc) prod.FormatName = "webrtc/milestone" prod.Mode = core.ModeActiveProducer diff --git a/internal/webrtc/openipc.go b/internal/webrtc/openipc.go index 2f2db1190..9c2bc5fb1 100644 --- a/internal/webrtc/openipc.go +++ b/internal/webrtc/openipc.go @@ -43,6 +43,12 @@ func openIPCClient(rawURL string, query url.Values) (core.Producer, error) { return nil, err } + defer func() { + if err != nil { + _ = pc.Close() + } + }() + // protect from sending ICE candidate before Offer var sendAnswer core.Waiter