mirror of
https://github.com/pion/webrtc.git
synced 2025-12-24 11:51:03 +08:00
Better error message on SDPSemantics mismatch
Tell user what RemoteDescription was detected as, and what was expected Resolves #2011
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
package webrtc
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
@@ -284,3 +285,45 @@ func TestSDPSemantics_UnifiedPlanWithFallback(t *testing.T) {
|
||||
|
||||
closePairNow(t, apc, opc)
|
||||
}
|
||||
|
||||
// Assert that we can catch Remote SessionDescription that don't match our Semantics
|
||||
func TestSDPSemantics_SetRemoteDescription_Mismatch(t *testing.T) {
|
||||
planBOffer := "v=0\r\no=- 4648475892259889561 3 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE video audio\r\na=ice-ufrag:1hhfzwf0ijpzm\r\na=ice-pwd:jm5puo2ab1op3vs59ca53bdk7s\r\na=fingerprint:sha-256 40:42:FB:47:87:52:BF:CB:EC:3A:DF:EB:06:DA:2D:B7:2F:59:42:10:23:7B:9D:4C:C9:58:DD:FF:A2:8F:17:67\r\nm=video 9 UDP/TLS/RTP/SAVPF 96\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=setup:passive\r\na=mid:video\r\na=sendonly\r\na=rtcp-mux\r\na=rtpmap:96 H264/90000\r\na=rtcp-fb:96 nack\r\na=rtcp-fb:96 goog-remb\r\na=fmtp:96 packetization-mode=1;profile-level-id=42e01f\r\na=ssrc:1505338584 cname:10000000b5810aac\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=setup:passive\r\na=mid:audio\r\na=sendonly\r\na=rtcp-mux\r\na=rtpmap:111 opus/48000/2\r\na=ssrc:697641945 cname:10000000b5810aac\r\n"
|
||||
unifiedPlanOffer := "v=0\r\no=- 4648475892259889561 3 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0 1\r\na=ice-ufrag:1hhfzwf0ijpzm\r\na=ice-pwd:jm5puo2ab1op3vs59ca53bdk7s\r\na=fingerprint:sha-256 40:42:FB:47:87:52:BF:CB:EC:3A:DF:EB:06:DA:2D:B7:2F:59:42:10:23:7B:9D:4C:C9:58:DD:FF:A2:8F:17:67\r\nm=video 9 UDP/TLS/RTP/SAVPF 96\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=setup:passive\r\na=mid:0\r\na=sendonly\r\na=rtcp-mux\r\na=rtpmap:96 H264/90000\r\na=rtcp-fb:96 nack\r\na=rtcp-fb:96 goog-remb\r\na=fmtp:96 packetization-mode=1;profile-level-id=42e01f\r\na=ssrc:1505338584 cname:10000000b5810aac\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=setup:passive\r\na=mid:1\r\na=sendonly\r\na=rtcp-mux\r\na=rtpmap:111 opus/48000/2\r\na=ssrc:697641945 cname:10000000b5810aac\r\n"
|
||||
|
||||
report := test.CheckRoutines(t)
|
||||
defer report()
|
||||
|
||||
lim := test.TimeOut(time.Second * 30)
|
||||
defer lim.Stop()
|
||||
|
||||
t.Run("PlanB", func(t *testing.T) {
|
||||
pc, err := NewPeerConnection(Configuration{
|
||||
SDPSemantics: SDPSemanticsUnifiedPlan,
|
||||
})
|
||||
assert.NoError(t, err)
|
||||
|
||||
err = pc.SetRemoteDescription(SessionDescription{SDP: planBOffer, Type: SDPTypeOffer})
|
||||
assert.NoError(t, err)
|
||||
|
||||
_, err = pc.CreateAnswer(nil)
|
||||
assert.True(t, errors.Is(err, ErrIncorrectSDPSemantics))
|
||||
|
||||
assert.NoError(t, pc.Close())
|
||||
})
|
||||
|
||||
t.Run("UnifiedPlan", func(t *testing.T) {
|
||||
pc, err := NewPeerConnection(Configuration{
|
||||
SDPSemantics: SDPSemanticsPlanB,
|
||||
})
|
||||
assert.NoError(t, err)
|
||||
|
||||
err = pc.SetRemoteDescription(SessionDescription{SDP: unifiedPlanOffer, Type: SDPTypeOffer})
|
||||
assert.NoError(t, err)
|
||||
|
||||
_, err = pc.CreateAnswer(nil)
|
||||
assert.True(t, errors.Is(err, ErrIncorrectSDPSemantics))
|
||||
|
||||
assert.NoError(t, pc.Close())
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user