mirror of
https://github.com/aler9/gortsplib
synced 2025-10-04 14:52:46 +08:00
support SDPs with spaces in origin (https://github.com/aler9/rtsp-simple-server/issues/127)
This commit is contained in:
@@ -71,7 +71,28 @@ func (s *SessionDescription) unmarshalOrigin(value string) error {
|
||||
value += "127.0.0.1"
|
||||
}
|
||||
|
||||
fields := strings.Fields(value)
|
||||
// find spaces from end to beginning, to support multiple spaces
|
||||
// in the first field
|
||||
fields := func() []string {
|
||||
var ret []string
|
||||
for len(value) > 0 {
|
||||
i := len(value) - 1
|
||||
for {
|
||||
if i < 0 || len(ret) == 5 {
|
||||
ret = append([]string{value}, ret...)
|
||||
return ret
|
||||
}
|
||||
if value[i] == ' ' {
|
||||
ret = append([]string{value[i+1:]}, ret...)
|
||||
value = value[:i]
|
||||
break
|
||||
}
|
||||
i--
|
||||
}
|
||||
}
|
||||
return ret
|
||||
}()
|
||||
|
||||
if len(fields) != 6 {
|
||||
return fmt.Errorf("%w `o=%v`", errSDPInvalidSyntax, fields)
|
||||
}
|
||||
|
@@ -1052,6 +1052,26 @@ var cases = []struct {
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
"spaces in origin",
|
||||
[]byte("v=0\r\n" +
|
||||
"o=RTSP Session 1 2 IN IP4 0.0.0.0\r\n" +
|
||||
"s=Sony RTSP Server\r\n"),
|
||||
[]byte("v=0\r\n" +
|
||||
"o=RTSP Session 1 2 IN IP4 0.0.0.0\r\n" +
|
||||
"s=Sony RTSP Server\r\n"),
|
||||
SessionDescription{
|
||||
Origin: psdp.Origin{
|
||||
Username: "RTSP Session",
|
||||
SessionID: 1,
|
||||
SessionVersion: 2,
|
||||
NetworkType: "IN",
|
||||
AddressType: "IP4",
|
||||
UnicastAddress: "0.0.0.0",
|
||||
},
|
||||
SessionName: psdp.SessionName("Sony RTSP Server"),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
func TestUnmarshal(t *testing.T) {
|
||||
|
Reference in New Issue
Block a user