mirror of
https://github.com/aler9/gortsplib
synced 2025-10-17 04:31:00 +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, ' ')
|
i := strings.IndexByte(in, ' ')
|
||||||
if i < 0 {
|
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:]
|
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 {
|
for len(in) > 0 {
|
||||||
m := r.FindStringSubmatch(in)
|
m := r.FindStringSubmatch(in)
|
||||||
if m == nil {
|
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]):]
|
in = in[len(m[0]):]
|
||||||
|
|
||||||
|
m[2] = strings.TrimPrefix(m[2], "\"")
|
||||||
|
m[2] = strings.TrimSuffix(m[2], "\"")
|
||||||
a.Values[m[1]] = 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"`,
|
`Digest realm="4419b63f5e51", nonce="8b84a3b789283a8bea8da7fa7d41f08b", stale="FALSE"`,
|
||||||
&HeaderAuth{
|
&HeaderAuth{
|
||||||
Prefix: "Digest",
|
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 response",
|
||||||
`Digest username="aa", realm="bb", nonce="cc", uri="dd", response="ee"`,
|
`Digest username="aa", realm="bb", nonce="cc", uri="dd", response="ee"`,
|
||||||
|
Reference in New Issue
Block a user