diff --git a/sdp.go b/sdp.go index 980f985077..0b034d294a 100644 --- a/sdp.go +++ b/sdp.go @@ -709,8 +709,13 @@ func extractFingerprint(desc *sdp.SessionDescription) (string, string, error) { return "", "", ErrSessionDescriptionNoFingerprint } + // https://github.com/pion/webrtc/issues/2621 + groupAttribue, _ := desc.Attribute(sdp.AttrKeyGroup) + + isBundled := strings.Contains(groupAttribue, "BUNDLE") + for _, m := range fingerprints { - if m != fingerprints[0] { + if m != fingerprints[0] && !isBundled { return "", "", ErrSessionDescriptionConflictingFingerprints } } @@ -769,14 +774,19 @@ func extractICEDetails(desc *sdp.SessionDescription, log logging.LeveledLogger) return "", "", nil, ErrSessionDescriptionMissingIcePwd } + // https://github.com/pion/webrtc/issues/2621 + groupAttribue, _ := desc.Attribute(sdp.AttrKeyGroup) + + isBundled := strings.Contains(groupAttribue, "BUNDLE") + for _, m := range remoteUfrags { - if m != remoteUfrags[0] { + if m != remoteUfrags[0] && !isBundled { return "", "", nil, ErrSessionDescriptionConflictingIceUfrag } } for _, m := range remotePwds { - if m != remotePwds[0] { + if m != remotePwds[0] && !isBundled { return "", "", nil, ErrSessionDescriptionConflictingIcePwd } }