From c9723436c7ca8678972967d8cb6138fe9d5c2bbd Mon Sep 17 00:00:00 2001 From: Benjamin Pracht Date: Fri, 14 Feb 2025 16:57:32 -0800 Subject: [PATCH] Fix REFER Route headers in the case the INVITE contains more than 1 Record-Route header --- pkg/sip/inbound.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/pkg/sip/inbound.go b/pkg/sip/inbound.go index 909971d9..3b6cda87 100644 --- a/pkg/sip/inbound.go +++ b/pkg/sip/inbound.go @@ -1169,9 +1169,13 @@ func (c *sipInbound) swapSrcDst(req *sip.Request) { for req.RemoveHeader("Via") { } req.PrependHeader(c.generateViaHeader(req)) - if route := req.RecordRoute(); route != nil { - req.RemoveHeader("Record-Route") - req.AppendHeader(&sip.RouteHeader{Address: route.Address}) + + rrHdrs := req.GetHeaders("Record-Route") + for _, hdr := range rrHdrs { + req.PrependHeader(&sip.RouteHeader{Address: hdr.(*sip.RecordRouteHeader).Address}) + } + // Remove all Record-Route headers + for req.RemoveHeader("Record-Route") { } }