client: fix reading sources without server ports (bluenviron/mediamtx#4253) (#796)

RTCP packets were sent out to nil addresses, due to the lack of server
ports, causing an error.
This commit is contained in:
Alessandro Ros
2025-06-08 12:45:05 +02:00
committed by GitHub
parent d98036a493
commit ff85f6156a
2 changed files with 25 additions and 2 deletions

View File

@@ -843,6 +843,10 @@ func TestClientPlayAnyPort(t *testing.T) {
serverDone := make(chan struct{})
defer func() { <-serverDone }()
serverTerminate := make(chan struct{})
defer close(serverTerminate)
go func() {
defer close(serverDone)
@@ -960,14 +964,20 @@ func TestClientPlayAnyPort(t *testing.T) {
require.Equal(t, &testRTCPPacket, packets[0])
close(serverRecv)
}
<-serverTerminate
}()
packetRecv := make(chan struct{})
c := Client{
AnyPortEnable: true,
AnyPortEnable: true,
receiverReportPeriod: 100 * time.Millisecond,
}
clientErr := make(chan struct{})
defer func() { <-clientErr }()
var med *description.Media
err = readAll(&c, "rtsp://localhost:8554/teststream",
func(medi *description.Media, _ format.Format, pkt *rtp.Packet) {
@@ -978,6 +988,12 @@ func TestClientPlayAnyPort(t *testing.T) {
require.NoError(t, err)
defer c.Close()
go func() {
err := c.Wait()
require.EqualError(t, err, "terminated")
close(clientErr)
}()
<-packetRecv
if ca == "random" {
@@ -985,6 +1001,13 @@ func TestClientPlayAnyPort(t *testing.T) {
require.NoError(t, err)
<-serverRecv
}
// make sure that RTCP receiver reports do not cause any error
select {
case <-time.After(200 * time.Millisecond):
case <-clientErr:
t.Error("should not happen")
}
})
}
}