send Authorization: Digest only when nonce exists
This commit is contained in:
parent
b16f72faae
commit
227ce8b073
33
client.go
33
client.go
@ -322,29 +322,30 @@ func (self *Client) ReadResponse() (res Response, err error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if realm != "" && nonce != "" {
|
if realm != "" {
|
||||||
if self.url.User == nil {
|
|
||||||
err = fmt.Errorf("rtsp: please provide username and password")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
var username string
|
var username string
|
||||||
var password string
|
var password string
|
||||||
var ok bool
|
|
||||||
username = self.url.User.Username()
|
if self.url.User == nil {
|
||||||
if password, ok = self.url.User.Password(); !ok {
|
err = fmt.Errorf("rtsp: no username")
|
||||||
err = fmt.Errorf("rtsp: please provide password")
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
hs1 := md5hash(username + ":" + realm + ":" + password)
|
username = self.url.User.Username()
|
||||||
|
password, _ = self.url.User.Password()
|
||||||
|
|
||||||
self.authHeaders = func(method string) []string {
|
self.authHeaders = func(method string) []string {
|
||||||
hs2 := md5hash(method + ":" + self.requestUri)
|
headers := []string{
|
||||||
response := md5hash(hs1 + ":" + nonce + ":" + hs2)
|
|
||||||
return []string{
|
|
||||||
fmt.Sprintf(`Authorization: Digest username="%s", realm="%s", nonce="%s", uri="%s", response="%s"`,
|
|
||||||
username, realm, nonce, self.requestUri, response),
|
|
||||||
fmt.Sprintf(`Authorization: Basic %s`, base64.StdEncoding.EncodeToString([]byte(username+":"+password))),
|
fmt.Sprintf(`Authorization: Basic %s`, base64.StdEncoding.EncodeToString([]byte(username+":"+password))),
|
||||||
}
|
}
|
||||||
|
if nonce != "" {
|
||||||
|
hs1 := md5hash(username + ":" + realm + ":" + password)
|
||||||
|
hs2 := md5hash(method + ":" + self.requestUri)
|
||||||
|
response := md5hash(hs1 + ":" + nonce + ":" + hs2)
|
||||||
|
headers = append(headers, fmt.Sprintf(
|
||||||
|
`Authorization: Digest username="%s", realm="%s", nonce="%s", uri="%s", response="%s"`,
|
||||||
|
username, realm, nonce, self.requestUri, response))
|
||||||
|
}
|
||||||
|
return headers
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -907,7 +908,7 @@ func (self *Client) ReadPacket() (i int, pkt av.Packet, err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (self *Client) ReadHeader() (err error) {
|
func (self *Client) ReadHeader() (err error) {
|
||||||
if _, err = self.Options(); err != nil {
|
if err = self.Options(); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if _, err = self.Describe(); err != nil {
|
if _, err = self.Describe(); err != nil {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user