server: always open firewall before sending messages (#666)

This commit is contained in:
Alessandro Ros
2024-12-24 16:50:53 +01:00
committed by GitHub
parent 5506eb2f7f
commit 93b012b3ca
2 changed files with 12 additions and 9 deletions

View File

@@ -713,6 +713,13 @@ func TestServerRecord(t *testing.T) {
doRecord(t, conn, "rtsp://localhost:8554/teststream", session) doRecord(t, conn, "rtsp://localhost:8554/teststream", session)
for i := 0; i < 2; i++ { 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) // server -> client (direct)
if transport == "udp" { if transport == "udp" {
buf := make([]byte, 2048) buf := make([]byte, 2048)
@@ -728,13 +735,6 @@ func TestServerRecord(t *testing.T) {
require.Equal(t, testRTCPPacketMarshaled, f.Payload) 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 // client -> server
if transport == "udp" { if transport == "udp" {
_, err = l1s[i].WriteTo(testRTPPacketMarshaled, &net.UDPAddr{ _, err = l1s[i].WriteTo(testRTPPacketMarshaled, &net.UDPAddr{

View File

@@ -60,8 +60,11 @@ func (sm *serverSessionMedia) start() {
sm.ss.s.udpRTCPListener.addClient(sm.ss.author.ip(), sm.udpRTCPReadPort, sm.readRTCPUDPPlay) sm.ss.s.udpRTCPListener.addClient(sm.ss.author.ip(), sm.udpRTCPReadPort, sm.readRTCPUDPPlay)
} else { } else {
// open the firewall by sending empty packets to the counterpart. // open the firewall by sending empty packets to the counterpart.
sm.ss.WritePacketRTP(sm.media, &rtp.Packet{Header: rtp.Header{Version: 2}}) //nolint:errcheck byts, _ := (&rtp.Packet{Header: rtp.Header{Version: 2}}).Marshal()
sm.ss.WritePacketRTCP(sm.media, &rtcp.ReceiverReport{}) //nolint:errcheck 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.udpRTPListener.addClient(sm.ss.author.ip(), sm.udpRTPReadPort, sm.readRTPUDPRecord)
sm.ss.s.udpRTCPListener.addClient(sm.ss.author.ip(), sm.udpRTCPReadPort, sm.readRTCPUDPRecord) sm.ss.s.udpRTCPListener.addClient(sm.ss.author.ip(), sm.udpRTCPReadPort, sm.readRTCPUDPRecord)