handle redirecting via 302 code
This commit is contained in:
		| @@ -310,6 +310,11 @@ func (self *Client) handleResp(res *Response) (err error) { | ||||
| 			self.session = fields[0] | ||||
| 		} | ||||
| 	} | ||||
| 	if res.StatusCode == 302 { | ||||
| 		if err = self.handle302(res); err != nil { | ||||
| 			return | ||||
| 		} | ||||
| 	} | ||||
| 	if res.StatusCode == 401 { | ||||
| 		if err = self.handle401(res); err != nil { | ||||
| 			return | ||||
| @@ -318,6 +323,31 @@ func (self *Client) handleResp(res *Response) (err error) { | ||||
| 	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) { | ||||
| 	/* | ||||
| 		RTSP/1.0 401 Unauthorized | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Dimitrii Lopanov
					Dimitrii Lopanov