diff --git a/pkg/headers/rtpinfo.go b/pkg/headers/rtpinfo.go index a4dfd355..8633accc 100644 --- a/pkg/headers/rtpinfo.go +++ b/pkg/headers/rtpinfo.go @@ -10,7 +10,7 @@ import ( // RTPInfoEntry is an entry of a RTP-Info header. type RTPInfoEntry struct { - URL *base.URL + URL string SequenceNumber *uint16 Timestamp *uint32 } @@ -40,11 +40,7 @@ func (h *RTPInfo) Read(v base.HeaderValue) error { k, v := tmp[0], tmp[1] switch k { case "url": - vu, err := base.ParseURL(v) - if err != nil { - return err - } - e.URL = vu + e.URL = v case "seq": vi, err := strconv.ParseUint(v, 10, 16) @@ -67,6 +63,10 @@ func (h *RTPInfo) Read(v base.HeaderValue) error { } } + if e.URL == "" { + return fmt.Errorf("URL is missing") + } + *h = append(*h, e) } @@ -79,7 +79,7 @@ func (h RTPInfo) Write() base.HeaderValue { for i, e := range h { var tmp []string - tmp = append(tmp, "url="+e.URL.String()) + tmp = append(tmp, "url="+e.URL) if e.SequenceNumber != nil { tmp = append(tmp, "seq="+strconv.FormatUint(uint64(*e.SequenceNumber), 10)) diff --git a/pkg/headers/rtpinfo_test.go b/pkg/headers/rtpinfo_test.go index 4ca11d6e..2bd53a41 100644 --- a/pkg/headers/rtpinfo_test.go +++ b/pkg/headers/rtpinfo_test.go @@ -20,7 +20,7 @@ var casesRTPInfo = []struct { base.HeaderValue{`url=rtsp://127.0.0.1/test.mkv/track1;seq=35243;rtptime=717574556`}, RTPInfo{ { - URL: base.MustParseURL("rtsp://127.0.0.1/test.mkv/track1"), + URL: "rtsp://127.0.0.1/test.mkv/track1", SequenceNumber: func() *uint16 { v := uint16(35243) return &v @@ -38,7 +38,7 @@ var casesRTPInfo = []struct { base.HeaderValue{`url=rtsp://127.0.0.1/test.mkv/track1;seq=35243;rtptime=717574556,url=rtsp://127.0.0.1/test.mkv/track2;seq=13655;rtptime=2848846950`}, RTPInfo{ { - URL: base.MustParseURL("rtsp://127.0.0.1/test.mkv/track1"), + URL: "rtsp://127.0.0.1/test.mkv/track1", SequenceNumber: func() *uint16 { v := uint16(35243) return &v @@ -49,7 +49,7 @@ var casesRTPInfo = []struct { }(), }, { - URL: base.MustParseURL("rtsp://127.0.0.1/test.mkv/track2"), + URL: "rtsp://127.0.0.1/test.mkv/track2", SequenceNumber: func() *uint16 { v := uint16(13655) return &v @@ -67,7 +67,7 @@ var casesRTPInfo = []struct { base.HeaderValue{`url=rtsp://127.0.0.1/test.mkv/track1;seq=35243`}, RTPInfo{ { - URL: base.MustParseURL("rtsp://127.0.0.1/test.mkv/track1"), + URL: "rtsp://127.0.0.1/test.mkv/track1", SequenceNumber: func() *uint16 { v := uint16(35243) return &v @@ -81,7 +81,7 @@ var casesRTPInfo = []struct { base.HeaderValue{`url=rtsp://127.0.0.1/test.mkv/track1;rtptime=717574556`}, RTPInfo{ { - URL: base.MustParseURL("rtsp://127.0.0.1/test.mkv/track1"), + URL: "rtsp://127.0.0.1/test.mkv/track1", Timestamp: func() *uint32 { v := uint32(717574556) return &v @@ -89,6 +89,24 @@ var casesRTPInfo = []struct { }, }, }, + { + "path instead of url", + base.HeaderValue{`url=trackID=0;seq=12447;rtptime=12447`}, + base.HeaderValue{`url=trackID=0;seq=12447;rtptime=12447`}, + RTPInfo{ + { + URL: "trackID=0", + SequenceNumber: func() *uint16 { + v := uint16(12447) + return &v + }(), + Timestamp: func() *uint32 { + v := uint32(12447) + return &v + }(), + }, + }, + }, } func TestRTPInfoRead(t *testing.T) {