From f846c7719bbb75e30bc70f055e1201e91135cdc2 Mon Sep 17 00:00:00 2001 From: cnderrauber Date: Thu, 9 Jan 2025 13:22:23 +0800 Subject: [PATCH] Disable SCTP zero checksum for old go client (#3319) Old go-sdks with old pion/sctp version can't process unknown parameters. --- pkg/rtc/clientinfo.go | 2 +- pkg/rtc/config.go | 2 -- pkg/rtc/transport.go | 4 ++++ 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/pkg/rtc/clientinfo.go b/pkg/rtc/clientinfo.go index bd14391de..8687efa22 100644 --- a/pkg/rtc/clientinfo.go +++ b/pkg/rtc/clientinfo.go @@ -102,7 +102,7 @@ func (c ClientInfo) SupportErrorResponse() bool { } func (c ClientInfo) SupportSctpZeroChecksum() bool { - return !(c.isGo() && c.compareVersion("2.1.3") <= 0) + return !(c.isGo() && c.compareVersion("2.4.0") < 0) } // compareVersion compares a semver against the current client SDK version diff --git a/pkg/rtc/config.go b/pkg/rtc/config.go index 94f982d98..a9b0aae28 100644 --- a/pkg/rtc/config.go +++ b/pkg/rtc/config.go @@ -69,8 +69,6 @@ func NewWebRTCConfig(conf *config.Config) (*WebRTCConfig, error) { // we don't want to use active TCP on a server, clients should be dialing webRTCConfig.SettingEngine.DisableActiveTCP(true) - webRTCConfig.SettingEngine.EnableSCTPZeroChecksum(true) - if rtcConf.PacketBufferSize == 0 { rtcConf.PacketBufferSize = 500 } diff --git a/pkg/rtc/transport.go b/pkg/rtc/transport.go index 881319447..8a83f92b0 100644 --- a/pkg/rtc/transport.go +++ b/pkg/rtc/transport.go @@ -306,6 +306,10 @@ func newPeerConnection(params TransportParams, onBandwidthEstimator func(estimat se.SetFireOnTrackBeforeFirstRTP(true) } + if params.ClientInfo.SupportSctpZeroChecksum() { + se.EnableSCTPZeroChecksum(true) + } + // // Disable SRTP replay protection (https://datatracker.ietf.org/doc/html/rfc3711#page-15). // Needed due to lack of RTX stream support in Pion.