From 93b012b3cae74ed5b969b86e008678ee79ed734a Mon Sep 17 00:00:00 2001 From: Alessandro Ros Date: Tue, 24 Dec 2024 16:50:53 +0100 Subject: [PATCH] server: always open firewall before sending messages (#666) --- server_record_test.go | 14 +++++++------- server_session_media.go | 7 +++++-- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/server_record_test.go b/server_record_test.go index 088481bf..c70cba2d 100644 --- a/server_record_test.go +++ b/server_record_test.go @@ -713,6 +713,13 @@ func TestServerRecord(t *testing.T) { doRecord(t, conn, "rtsp://localhost:8554/teststream", session) for i := 0; i < 2; i++ { + // skip firewall opening + if transport == "udp" { + buf := make([]byte, 2048) + _, _, err = l2s[i].ReadFrom(buf) + require.NoError(t, err) + } + // server -> client (direct) if transport == "udp" { buf := make([]byte, 2048) @@ -728,13 +735,6 @@ func TestServerRecord(t *testing.T) { require.Equal(t, testRTCPPacketMarshaled, f.Payload) } - // skip firewall opening - if transport == "udp" { - buf := make([]byte, 2048) - _, _, err = l2s[i].ReadFrom(buf) - require.NoError(t, err) - } - // client -> server if transport == "udp" { _, err = l1s[i].WriteTo(testRTPPacketMarshaled, &net.UDPAddr{ diff --git a/server_session_media.go b/server_session_media.go index c558ac55..1b58d39b 100644 --- a/server_session_media.go +++ b/server_session_media.go @@ -60,8 +60,11 @@ func (sm *serverSessionMedia) start() { sm.ss.s.udpRTCPListener.addClient(sm.ss.author.ip(), sm.udpRTCPReadPort, sm.readRTCPUDPPlay) } else { // open the firewall by sending empty packets to the counterpart. - sm.ss.WritePacketRTP(sm.media, &rtp.Packet{Header: rtp.Header{Version: 2}}) //nolint:errcheck - sm.ss.WritePacketRTCP(sm.media, &rtcp.ReceiverReport{}) //nolint:errcheck + byts, _ := (&rtp.Packet{Header: rtp.Header{Version: 2}}).Marshal() + sm.ss.s.udpRTPListener.write(byts, sm.udpRTPWriteAddr) //nolint:errcheck + + byts, _ = (&rtcp.ReceiverReport{}).Marshal() + sm.ss.s.udpRTCPListener.write(byts, sm.udpRTCPWriteAddr) //nolint:errcheck sm.ss.s.udpRTPListener.addClient(sm.ss.author.ip(), sm.udpRTPReadPort, sm.readRTPUDPRecord) sm.ss.s.udpRTCPListener.addClient(sm.ss.author.ip(), sm.udpRTCPReadPort, sm.readRTCPUDPRecord)