From 115898d713494761621ef2f78547ec06f9a0799b Mon Sep 17 00:00:00 2001 From: 8thgencore Date: Sat, 18 Apr 2026 15:16:35 +0300 Subject: [PATCH] fix: bind SIP media sockets to signaling interface --- pkg/sip/inbound.go | 1 + pkg/sip/media_port.go | 7 ++++++- pkg/sip/outbound.go | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/pkg/sip/inbound.go b/pkg/sip/inbound.go index 29c8a5b4..b80c8cfe 100644 --- a/pkg/sip/inbound.go +++ b/pkg/sip/inbound.go @@ -990,6 +990,7 @@ func (c *inboundCall) runMediaConn(tid traceid.ID, offerData []byte, enc livekit logSignalChanges, _ = strconv.ParseBool(featureFlags[signalLoggingFeatureFlag]) mp, err := NewMediaPort(tid, c.log(), c.mon, &MediaOptions{ IP: c.s.sconf.MediaIP, + BindIP: c.s.sconf.SignalingIPLocal, Ports: conf.RTPPort, MediaTimeoutInitial: c.s.conf.MediaTimeoutInitial, MediaTimeout: c.s.conf.MediaTimeout, diff --git a/pkg/sip/media_port.go b/pkg/sip/media_port.go index a18ee58a..84b5cc6a 100644 --- a/pkg/sip/media_port.go +++ b/pkg/sip/media_port.go @@ -306,6 +306,7 @@ type MediaConf struct { type MediaOptions struct { IP netip.Addr + BindIP netip.Addr Ports rtcconfig.PortRange MediaTimeoutInitial time.Duration MediaTimeout time.Duration @@ -335,7 +336,11 @@ func NewMediaPortWith(tid traceid.ID, log logger.Logger, mon *stats.CallMonitor, opts.Stats = &PortStats{} } if conn == nil { - c, err := rtp.ListenUDPPortRange(opts.Ports.Start, opts.Ports.End, netip.AddrFrom4([4]byte{0, 0, 0, 0})) + bindIP := opts.BindIP + if !bindIP.IsValid() { + bindIP = netip.AddrFrom4([4]byte{0, 0, 0, 0}) + } + c, err := rtp.ListenUDPPortRange(opts.Ports.Start, opts.Ports.End, bindIP) if err != nil { return nil, err } diff --git a/pkg/sip/outbound.go b/pkg/sip/outbound.go index 1db50978..ff2dca31 100644 --- a/pkg/sip/outbound.go +++ b/pkg/sip/outbound.go @@ -147,6 +147,7 @@ func (c *Client) newCall(ctx context.Context, tid traceid.ID, conf *config.Confi call.media, err = NewMediaPort(tid, call.log, call.mon, &MediaOptions{ IP: c.sconf.MediaIP, + BindIP: c.sconf.SignalingIPLocal, Ports: conf.RTPPort, MediaTimeoutInitial: c.conf.MediaTimeoutInitial, MediaTimeout: c.conf.MediaTimeout,