From c493022f0f71d80aa0fa46846ff497e5c12c01f7 Mon Sep 17 00:00:00 2001 From: David Zhao Date: Mon, 19 Jul 2021 09:16:01 -0700 Subject: [PATCH] fix force_tcp flag: don't set UDPMux when enabled (#62) --- pkg/rtc/config.go | 65 +++++++++++++++++++++++------------------------ 1 file changed, 32 insertions(+), 33 deletions(-) diff --git a/pkg/rtc/config.go b/pkg/rtc/config.go index 3346370f3..ccc6947f6 100644 --- a/pkg/rtc/config.go +++ b/pkg/rtc/config.go @@ -54,45 +54,44 @@ func NewWebRTCConfig(conf *config.Config, externalIP string) (*WebRTCConfig, err rtcConf.PacketBufferSize = 500 } + var udpMux *ice.UDPMuxDefault + var udpMuxConn *net.UDPConn + var err error networkTypes := make([]webrtc.NetworkType, 0, 4) + if !rtcConf.ForceTCP { networkTypes = append(networkTypes, webrtc.NetworkTypeUDP4, ) - } + if rtcConf.ICEPortRangeStart != 0 && rtcConf.ICEPortRangeEnd != 0 { + if err := s.SetEphemeralUDPPortRange(uint16(rtcConf.ICEPortRangeStart), uint16(rtcConf.ICEPortRangeEnd)); err != nil { + return nil, err + } + } else if rtcConf.UDPPort != 0 { + udpMuxConn, err = net.ListenUDP("udp4", &net.UDPAddr{ + Port: int(rtcConf.UDPPort), + }) + if err != nil { + return nil, err + } + _ = udpMuxConn.SetReadBuffer(defaultUDPBufferSize) + _ = udpMuxConn.SetWriteBuffer(defaultUDPBufferSize) - var udpMux *ice.UDPMuxDefault - var udpMuxConn *net.UDPConn - var err error - - if rtcConf.ICEPortRangeStart != 0 && rtcConf.ICEPortRangeEnd != 0 { - if err := s.SetEphemeralUDPPortRange(uint16(rtcConf.ICEPortRangeStart), uint16(rtcConf.ICEPortRangeEnd)); err != nil { - return nil, err - } - } else if rtcConf.UDPPort != 0 { - udpMuxConn, err = net.ListenUDP("udp4", &net.UDPAddr{ - Port: int(rtcConf.UDPPort), - }) - if err != nil { - return nil, err - } - _ = udpMuxConn.SetReadBuffer(defaultUDPBufferSize) - _ = udpMuxConn.SetWriteBuffer(defaultUDPBufferSize) - - udpMux = ice.NewUDPMuxDefault(ice.UDPMuxParams{ - Logger: lkLogger, - UDPConn: udpMuxConn, - }) - s.SetICEUDPMux(udpMux) - if !conf.Development { - val, err := checkUDPReadBuffer() - if err == nil { - if val < minUDPBufferSize { - logger.Warnw("UDP receive buffer is too small for a production set-up", nil, - "current", val, - "suggested", minUDPBufferSize) - } else { - logger.Debugw("UDP receive buffer size", "current", val) + udpMux = ice.NewUDPMuxDefault(ice.UDPMuxParams{ + Logger: lkLogger, + UDPConn: udpMuxConn, + }) + s.SetICEUDPMux(udpMux) + if !conf.Development { + val, err := checkUDPReadBuffer() + if err == nil { + if val < minUDPBufferSize { + logger.Warnw("UDP receive buffer is too small for a production set-up", nil, + "current", val, + "suggested", minUDPBufferSize) + } else { + logger.Debugw("UDP receive buffer size", "current", val) + } } } }