From 398c0b485d75719f5abc5aefb2db89c84480e62b Mon Sep 17 00:00:00 2001 From: sukun Date: Wed, 12 Jun 2024 16:25:57 +0530 Subject: [PATCH] webrtc: fix ufrag prefix for dialing (#2832) --- p2p/transport/webrtc/transport.go | 8 +++++--- p2p/transport/webrtc/transport_test.go | 7 +++++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/p2p/transport/webrtc/transport.go b/p2p/transport/webrtc/transport.go index b04753ecab..68a2988c78 100644 --- a/p2p/transport/webrtc/transport.go +++ b/p2p/transport/webrtc/transport.go @@ -415,15 +415,17 @@ func genUfrag() string { uFragAlphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" uFragPrefix = "libp2p+webrtc+v1/" uFragIdLength = 32 - uFragIdOffset = len(uFragPrefix) - uFragLength = uFragIdOffset + uFragIdLength + uFragLength = len(uFragPrefix) + uFragIdLength ) seed := [8]byte{} rand.Read(seed[:]) r := mrand.New(mrand.NewSource(binary.BigEndian.Uint64(seed[:]))) b := make([]byte, uFragLength) - for i := uFragIdOffset; i < uFragLength; i++ { + for i := 0; i < len(uFragPrefix); i++ { + b[i] = uFragPrefix[i] + } + for i := len(uFragPrefix); i < uFragLength; i++ { b[i] = uFragAlphabet[r.Intn(len(uFragAlphabet))] } return string(b) diff --git a/p2p/transport/webrtc/transport_test.go b/p2p/transport/webrtc/transport_test.go index a3054a82df..5831a257a7 100644 --- a/p2p/transport/webrtc/transport_test.go +++ b/p2p/transport/webrtc/transport_test.go @@ -860,3 +860,10 @@ func TestMaxInFlightRequests(t *testing.T) { require.Equal(t, count, int(success.Load()), "expected exactly 3 dial successes") require.Equal(t, 1, int(fails.Load()), "expected exactly 1 dial failure") } + +func TestGenUfrag(t *testing.T) { + for i := 0; i < 10; i++ { + s := genUfrag() + require.True(t, strings.HasPrefix(s, "libp2p+webrtc+v1/")) + } +}