move url.URL into base.URL (#459)

This commit is contained in:
Alessandro Ros
2023-11-07 16:51:45 +01:00
committed by GitHub
parent b8838ca595
commit 01b3bfc6ab
44 changed files with 268 additions and 259 deletions

View File

@@ -29,7 +29,6 @@ import (
"github.com/bluenviron/gortsplib/v4/pkg/liberrors"
"github.com/bluenviron/gortsplib/v4/pkg/rtptime"
"github.com/bluenviron/gortsplib/v4/pkg/sdp"
"github.com/bluenviron/gortsplib/v4/pkg/url"
)
// convert an URL into an address, in particular:
@@ -37,7 +36,7 @@ import (
// * handle IPv6 with or without square brackets.
// Adapted from net/http:
// https://cs.opensource.google/go/go/+/refs/tags/go1.20.5:src/net/http/transport.go;l=2747
func canonicalAddr(u *url.URL) string {
func canonicalAddr(u *base.URL) string {
addr := u.Hostname()
port := u.Port()
@@ -56,10 +55,10 @@ func isAnyPort(p int) bool {
return p == 0 || p == 1
}
func findBaseURL(sd *sdp.SessionDescription, res *base.Response, u *url.URL) (*url.URL, error) {
func findBaseURL(sd *sdp.SessionDescription, res *base.Response, u *base.URL) (*base.URL, error) {
// use global control attribute
if control, ok := sd.Attribute("control"); ok && control != "*" {
ret, err := url.Parse(control)
ret, err := base.ParseURL(control)
if err != nil {
return nil, fmt.Errorf("invalid control attribute: '%v'", control)
}
@@ -76,7 +75,7 @@ func findBaseURL(sd *sdp.SessionDescription, res *base.Response, u *url.URL) (*u
return nil, fmt.Errorf("invalid Content-Base: '%v'", cb)
}
ret, err := url.Parse(cb[0])
ret, err := base.ParseURL(cb[0])
if err != nil {
return nil, fmt.Errorf("invalid Content-Base: '%v'", cb)
}
@@ -138,23 +137,23 @@ func (s clientState) String() string {
}
type optionsReq struct {
url *url.URL
url *base.URL
res chan clientRes
}
type describeReq struct {
url *url.URL
url *base.URL
res chan clientRes
}
type announceReq struct {
url *url.URL
url *base.URL
desc *description.Session
res chan clientRes
}
type setupReq struct {
baseURL *url.URL
baseURL *base.URL
media *description.Media
rtpPort int
rtcpPort int
@@ -288,7 +287,7 @@ type Client struct {
receiverReportPeriod time.Duration
checkTimeoutPeriod time.Duration
connURL *url.URL
connURL *base.URL
ctx context.Context
ctxCancel func()
state clientState
@@ -299,8 +298,8 @@ type Client struct {
cseq int
optionsSent bool
useGetParameter bool
lastDescribeURL *url.URL
baseURL *url.URL
lastDescribeURL *base.URL
baseURL *base.URL
effectiveTransport *Transport
medias map[*description.Media]*clientMedia
tcpCallbackByChannel map[int]readFunc
@@ -422,7 +421,7 @@ func (c *Client) Start(scheme string, host string) error {
ctx, ctxCancel := context.WithCancel(context.Background())
c.connURL = &url.URL{
c.connURL = &base.URL{
Scheme: scheme,
Host: host,
}
@@ -450,7 +449,7 @@ func (c *Client) Start(scheme string, host string) error {
// StartRecording connects to the address and starts publishing given media.
func (c *Client) StartRecording(address string, desc *description.Session) error {
u, err := url.Parse(address)
u, err := base.ParseURL(address)
if err != nil {
return err
}
@@ -755,7 +754,7 @@ func (c *Client) trySwitchingProtocol() error {
return nil
}
func (c *Client) trySwitchingProtocol2(medi *description.Media, baseURL *url.URL) (*base.Response, error) {
func (c *Client) trySwitchingProtocol2(medi *description.Media, baseURL *base.URL) (*base.Response, error) {
c.OnTransportSwitch(liberrors.ErrClientSwitchToTCP2{})
prevConnURL := c.connURL
@@ -1027,7 +1026,7 @@ func (c *Client) doKeepAlive() error {
return err
}
func (c *Client) doOptions(u *url.URL) (*base.Response, error) {
func (c *Client) doOptions(u *base.URL) (*base.Response, error) {
err := c.checkState(map[clientState]struct{}{
clientStateInitial: {},
clientStatePrePlay: {},
@@ -1066,7 +1065,7 @@ func (c *Client) doOptions(u *url.URL) (*base.Response, error) {
}
// Options sends an OPTIONS request.
func (c *Client) Options(u *url.URL) (*base.Response, error) {
func (c *Client) Options(u *base.URL) (*base.Response, error) {
cres := make(chan clientRes)
select {
case c.chOptions <- optionsReq{url: u, res: cres}:
@@ -1078,7 +1077,7 @@ func (c *Client) Options(u *url.URL) (*base.Response, error) {
}
}
func (c *Client) doDescribe(u *url.URL) (*description.Session, *base.Response, error) {
func (c *Client) doDescribe(u *base.URL) (*description.Session, *base.Response, error) {
err := c.checkState(map[clientState]struct{}{
clientStateInitial: {},
clientStatePrePlay: {},
@@ -1111,7 +1110,7 @@ func (c *Client) doDescribe(u *url.URL) (*description.Session, *base.Response, e
len(res.Header["Location"]) == 1 {
c.reset()
ru, err := url.Parse(res.Header["Location"][0])
ru, err := base.ParseURL(res.Header["Location"][0])
if err != nil {
return nil, nil, err
}
@@ -1120,7 +1119,7 @@ func (c *Client) doDescribe(u *url.URL) (*description.Session, *base.Response, e
ru.User = u.User
}
c.connURL = &url.URL{
c.connURL = &base.URL{
Scheme: ru.Scheme,
Host: ru.Host,
}
@@ -1167,7 +1166,7 @@ func (c *Client) doDescribe(u *url.URL) (*description.Session, *base.Response, e
}
// Describe sends a DESCRIBE request.
func (c *Client) Describe(u *url.URL) (*description.Session, *base.Response, error) {
func (c *Client) Describe(u *base.URL) (*description.Session, *base.Response, error) {
cres := make(chan clientRes)
select {
case c.chDescribe <- describeReq{url: u, res: cres}:
@@ -1179,7 +1178,7 @@ func (c *Client) Describe(u *url.URL) (*description.Session, *base.Response, err
}
}
func (c *Client) doAnnounce(u *url.URL, desc *description.Session) (*base.Response, error) {
func (c *Client) doAnnounce(u *base.URL, desc *description.Session) (*base.Response, error) {
err := c.checkState(map[clientState]struct{}{
clientStateInitial: {},
})
@@ -1224,7 +1223,7 @@ func (c *Client) doAnnounce(u *url.URL, desc *description.Session) (*base.Respon
}
// Announce sends an ANNOUNCE request.
func (c *Client) Announce(u *url.URL, desc *description.Session) (*base.Response, error) {
func (c *Client) Announce(u *base.URL, desc *description.Session) (*base.Response, error) {
cres := make(chan clientRes)
select {
case c.chAnnounce <- announceReq{url: u, desc: desc, res: cres}:
@@ -1237,7 +1236,7 @@ func (c *Client) Announce(u *url.URL, desc *description.Session) (*base.Response
}
func (c *Client) doSetup(
baseURL *url.URL,
baseURL *base.URL,
medi *description.Media,
rtpPort int,
rtcpPort int,
@@ -1538,7 +1537,7 @@ func (c *Client) findFreeChannelPair() int {
// rtpPort and rtcpPort are used only if transport is UDP.
// if rtpPort and rtcpPort are zero, they are chosen automatically.
func (c *Client) Setup(
baseURL *url.URL,
baseURL *base.URL,
media *description.Media,
rtpPort int,
rtcpPort int,
@@ -1561,7 +1560,7 @@ func (c *Client) Setup(
}
// SetupAll setups all the given medias.
func (c *Client) SetupAll(baseURL *url.URL, medias []*description.Media) error {
func (c *Client) SetupAll(baseURL *base.URL, medias []*description.Media) error {
for _, m := range medias {
_, err := c.Setup(baseURL, m, 0, 0)
if err != nil {