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) {