mirror of
https://github.com/aler9/gortsplib
synced 2025-10-16 20:20:40 +08:00
support stale=FALSE in authentication header
This commit is contained in:
@@ -20,19 +20,21 @@ func ReadHeaderAuth(in string) (*HeaderAuth, error) {
|
||||
|
||||
i := strings.IndexByte(in, ' ')
|
||||
if i < 0 {
|
||||
return nil, fmt.Errorf("parse error")
|
||||
return nil, fmt.Errorf("unable to find prefix (%s)", in)
|
||||
}
|
||||
a.Prefix, in = in[:i], in[i+1:]
|
||||
|
||||
r := regexp.MustCompile("^([a-z]+)=\"(.+?)\"(, )?")
|
||||
r := regexp.MustCompile("^([a-z]+)=(\"(.+?)\"|([a-zA-Z0-9]+))(, )?")
|
||||
|
||||
for len(in) > 0 {
|
||||
m := r.FindStringSubmatch(in)
|
||||
if m == nil {
|
||||
return nil, fmt.Errorf("parse error")
|
||||
return nil, fmt.Errorf("unable to parse key-value (%s)", in)
|
||||
}
|
||||
in = in[len(m[0]):]
|
||||
|
||||
m[2] = strings.TrimPrefix(m[2], "\"")
|
||||
m[2] = strings.TrimSuffix(m[2], "\"")
|
||||
a.Values[m[1]] = m[2]
|
||||
}
|
||||
|
||||
|
@@ -22,7 +22,7 @@ var casesHeaderAuth = []struct {
|
||||
},
|
||||
},
|
||||
{
|
||||
"digest request",
|
||||
"digest request 1",
|
||||
`Digest realm="4419b63f5e51", nonce="8b84a3b789283a8bea8da7fa7d41f08b", stale="FALSE"`,
|
||||
&HeaderAuth{
|
||||
Prefix: "Digest",
|
||||
@@ -33,6 +33,18 @@ var casesHeaderAuth = []struct {
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
"digest request 2",
|
||||
`Digest realm="4419b63f5e51", nonce="8b84a3b789283a8bea8da7fa7d41f08b", stale=FALSE`,
|
||||
&HeaderAuth{
|
||||
Prefix: "Digest",
|
||||
Values: map[string]string{
|
||||
"realm": "4419b63f5e51",
|
||||
"nonce": "8b84a3b789283a8bea8da7fa7d41f08b",
|
||||
"stale": "FALSE",
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
"digest response",
|
||||
`Digest username="aa", realm="bb", nonce="cc", uri="dd", response="ee"`,
|
||||
|
Reference in New Issue
Block a user