From d2380aeed100b536e43a9657430891d48c81c1c0 Mon Sep 17 00:00:00 2001 From: aler9 <46489434+aler9@users.noreply.github.com> Date: Thu, 21 Apr 2022 08:58:59 +0200 Subject: [PATCH] fix transport header parsing with dahua rtsp server (#121) --- pkg/headers/transport.go | 11 +---------- pkg/headers/transport_test.go | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/pkg/headers/transport.go b/pkg/headers/transport.go index 06fc98f9..636bfe09 100644 --- a/pkg/headers/transport.go +++ b/pkg/headers/transport.go @@ -201,17 +201,8 @@ func (h *Transport) Read(v base.HeaderValue) error { h.ServerPorts = ports case "ssrc": - // replace initial spaces - var b strings.Builder - b.Grow(len(v)) - i := 0 - for ; i < len(v) && v[i] == ' '; i++ { - b.WriteByte('0') - } - b.WriteString(v[i:]) - v = b.String() + v = strings.TrimLeft(v, " ") - // add initial zeros if (len(v) % 2) != 0 { v = "0" + v } diff --git a/pkg/headers/transport_test.go b/pkg/headers/transport_test.go index f9b198da..8917e3c9 100644 --- a/pkg/headers/transport_test.go +++ b/pkg/headers/transport_test.go @@ -181,6 +181,23 @@ var casesTransport = []struct { }(), }, }, + { + "dahua rtsp server ssrc with initial spaces", + base.HeaderValue{`RTP/AVP/TCP;unicast;interleaved=0-1;ssrc= D93FF`}, + base.HeaderValue{`RTP/AVP/TCP;unicast;interleaved=0-1;ssrc=000D93FF`}, + Transport{ + Protocol: TransportProtocolTCP, + Delivery: func() *TransportDelivery { + v := TransportDeliveryUnicast + return &v + }(), + InterleavedIDs: &[2]int{0, 1}, + SSRC: func() *uint32 { + v := uint32(0xD93FF) + return &v + }(), + }, + }, } func TestTransportRead(t *testing.T) {