mirror of
https://github.com/aler9/gortsplib
synced 2025-10-05 15:16:51 +08:00
client: support reading from servers that use random UDP ports (https://github.com/aler9/rtsp-simple-server/issues/691)
This commit is contained in:
@@ -1425,7 +1425,7 @@ func (c *Client) doSetup(
|
|||||||
rtpListener.remoteReadIP = c.nconn.RemoteAddr().(*net.TCPAddr).IP
|
rtpListener.remoteReadIP = c.nconn.RemoteAddr().(*net.TCPAddr).IP
|
||||||
rtpListener.remoteWriteIP = c.nconn.RemoteAddr().(*net.TCPAddr).IP
|
rtpListener.remoteWriteIP = c.nconn.RemoteAddr().(*net.TCPAddr).IP
|
||||||
rtpListener.remoteZone = c.nconn.RemoteAddr().(*net.TCPAddr).Zone
|
rtpListener.remoteZone = c.nconn.RemoteAddr().(*net.TCPAddr).Zone
|
||||||
if thRes.ServerPorts != nil {
|
if !c.AnyPortEnable {
|
||||||
rtpListener.remotePort = thRes.ServerPorts[0]
|
rtpListener.remotePort = thRes.ServerPorts[0]
|
||||||
}
|
}
|
||||||
rtpListener.trackID = trackID
|
rtpListener.trackID = trackID
|
||||||
@@ -1435,7 +1435,7 @@ func (c *Client) doSetup(
|
|||||||
rtcpListener.remoteReadIP = c.nconn.RemoteAddr().(*net.TCPAddr).IP
|
rtcpListener.remoteReadIP = c.nconn.RemoteAddr().(*net.TCPAddr).IP
|
||||||
rtcpListener.remoteWriteIP = c.nconn.RemoteAddr().(*net.TCPAddr).IP
|
rtcpListener.remoteWriteIP = c.nconn.RemoteAddr().(*net.TCPAddr).IP
|
||||||
rtcpListener.remoteZone = c.nconn.RemoteAddr().(*net.TCPAddr).Zone
|
rtcpListener.remoteZone = c.nconn.RemoteAddr().(*net.TCPAddr).Zone
|
||||||
if thRes.ServerPorts != nil {
|
if !c.AnyPortEnable {
|
||||||
rtcpListener.remotePort = thRes.ServerPorts[1]
|
rtcpListener.remotePort = thRes.ServerPorts[1]
|
||||||
}
|
}
|
||||||
rtcpListener.trackID = trackID
|
rtcpListener.trackID = trackID
|
||||||
|
@@ -792,6 +792,7 @@ func TestClientReadAnyPort(t *testing.T) {
|
|||||||
"zero",
|
"zero",
|
||||||
"zero_one",
|
"zero_one",
|
||||||
"no",
|
"no",
|
||||||
|
"random",
|
||||||
} {
|
} {
|
||||||
t.Run(ca, func(t *testing.T) {
|
t.Run(ca, func(t *testing.T) {
|
||||||
l, err := net.Listen("tcp", "localhost:8554")
|
l, err := net.Listen("tcp", "localhost:8554")
|
||||||
@@ -868,8 +869,13 @@ func TestClientReadAnyPort(t *testing.T) {
|
|||||||
|
|
||||||
case "zero_one":
|
case "zero_one":
|
||||||
return &[2]int{0, 1}
|
return &[2]int{0, 1}
|
||||||
|
|
||||||
|
case "no":
|
||||||
|
return nil
|
||||||
|
|
||||||
|
default: // random
|
||||||
|
return &[2]int{23040, 23041}
|
||||||
}
|
}
|
||||||
return nil
|
|
||||||
}(),
|
}(),
|
||||||
}.Write(),
|
}.Write(),
|
||||||
},
|
},
|
||||||
@@ -887,7 +893,7 @@ func TestClientReadAnyPort(t *testing.T) {
|
|||||||
|
|
||||||
time.Sleep(1 * time.Second)
|
time.Sleep(1 * time.Second)
|
||||||
|
|
||||||
l1, err := net.ListenPacket("udp", "localhost:0")
|
l1, err := net.ListenPacket("udp", "localhost:13344")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
defer l1.Close()
|
defer l1.Close()
|
||||||
|
|
||||||
|
@@ -170,7 +170,7 @@ func (l *clientUDPListener) run() {
|
|||||||
|
|
||||||
uaddr := addr.(*net.UDPAddr)
|
uaddr := addr.(*net.UDPAddr)
|
||||||
|
|
||||||
if !l.remoteReadIP.Equal(uaddr.IP) || (!isAnyPort(l.remotePort) && l.remotePort != uaddr.Port) {
|
if !l.remoteReadIP.Equal(uaddr.IP) || (l.remotePort != 0 && l.remotePort != uaddr.Port) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user