handle redirecting via 302 code

This commit is contained in:
Dimitrii Lopanov 2020-06-26 08:32:49 +03:00
parent b652f1bfba
commit ce2edddbeb

View File

@ -310,6 +310,11 @@ func (self *Client) handleResp(res *Response) (err error) {
self.session = fields[0] self.session = fields[0]
} }
} }
if res.StatusCode == 302 {
if err = self.handle302(res); err != nil {
return
}
}
if res.StatusCode == 401 { if res.StatusCode == 401 {
if err = self.handle401(res); err != nil { if err = self.handle401(res); err != nil {
return return
@ -318,6 +323,31 @@ func (self *Client) handleResp(res *Response) (err error) {
return return
} }
func (self *Client) handle302(res *Response) (err error) {
/*
RTSP/1.0 200 OK
CSeq: 302
*/
newLocation := res.Headers.Get("Location")
fmt.Printf("\tRedirecting stream to other location: %s\n", newLocation)
err = self.Close()
if err != nil {
return err
}
newConnect, err := Dial(newLocation)
if err != nil {
return err
}
self.requestUri = newLocation
self.conn = newConnect.conn
self.brconn = newConnect.brconn
return err
}
func (self *Client) handle401(res *Response) (err error) { func (self *Client) handle401(res *Response) (err error) {
/* /*
RTSP/1.0 401 Unauthorized RTSP/1.0 401 Unauthorized