mirror of
https://github.com/aler9/gortsplib
synced 2025-10-04 23:02:45 +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.remoteWriteIP = c.nconn.RemoteAddr().(*net.TCPAddr).IP
|
||||
rtpListener.remoteZone = c.nconn.RemoteAddr().(*net.TCPAddr).Zone
|
||||
if thRes.ServerPorts != nil {
|
||||
if !c.AnyPortEnable {
|
||||
rtpListener.remotePort = thRes.ServerPorts[0]
|
||||
}
|
||||
rtpListener.trackID = trackID
|
||||
@@ -1435,7 +1435,7 @@ func (c *Client) doSetup(
|
||||
rtcpListener.remoteReadIP = c.nconn.RemoteAddr().(*net.TCPAddr).IP
|
||||
rtcpListener.remoteWriteIP = c.nconn.RemoteAddr().(*net.TCPAddr).IP
|
||||
rtcpListener.remoteZone = c.nconn.RemoteAddr().(*net.TCPAddr).Zone
|
||||
if thRes.ServerPorts != nil {
|
||||
if !c.AnyPortEnable {
|
||||
rtcpListener.remotePort = thRes.ServerPorts[1]
|
||||
}
|
||||
rtcpListener.trackID = trackID
|
||||
|
@@ -792,6 +792,7 @@ func TestClientReadAnyPort(t *testing.T) {
|
||||
"zero",
|
||||
"zero_one",
|
||||
"no",
|
||||
"random",
|
||||
} {
|
||||
t.Run(ca, func(t *testing.T) {
|
||||
l, err := net.Listen("tcp", "localhost:8554")
|
||||
@@ -868,8 +869,13 @@ func TestClientReadAnyPort(t *testing.T) {
|
||||
|
||||
case "zero_one":
|
||||
return &[2]int{0, 1}
|
||||
|
||||
case "no":
|
||||
return nil
|
||||
|
||||
default: // random
|
||||
return &[2]int{23040, 23041}
|
||||
}
|
||||
return nil
|
||||
}(),
|
||||
}.Write(),
|
||||
},
|
||||
@@ -887,7 +893,7 @@ func TestClientReadAnyPort(t *testing.T) {
|
||||
|
||||
time.Sleep(1 * time.Second)
|
||||
|
||||
l1, err := net.ListenPacket("udp", "localhost:0")
|
||||
l1, err := net.ListenPacket("udp", "localhost:13344")
|
||||
require.NoError(t, err)
|
||||
defer l1.Close()
|
||||
|
||||
|
@@ -170,7 +170,7 @@ func (l *clientUDPListener) run() {
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user