From 858c04bacf2f71337f46cd075fc6c89c6056b575 Mon Sep 17 00:00:00 2001 From: Alex X Date: Wed, 26 Feb 2025 21:39:42 +0300 Subject: [PATCH] Fix situation when WebRTC candidate pair changes multiple times #1282 --- pkg/webrtc/conn.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkg/webrtc/conn.go b/pkg/webrtc/conn.go index 5bc16ede..0845bdda 100644 --- a/pkg/webrtc/conn.go +++ b/pkg/webrtc/conn.go @@ -51,6 +51,10 @@ func NewConn(pc *webrtc.PeerConnection) *Conn { } pc.SCTP().Transport().ICETransport().OnSelectedCandidatePairChange( func(pair *webrtc.ICECandidatePair) { + // fix situation when candidate pair changes multiple times + if i := strings.IndexByte(c.Protocol, '+'); i > 0 { + c.Protocol = c.Protocol[:i] + } c.Protocol += "+" + pair.Remote.Protocol.String() c.RemoteAddr = fmt.Sprintf( "%s:%d %s", sanitizeIP6(pair.Remote.Address), pair.Remote.Port, pair.Remote.Typ,