Update: I have just downgraded to 5.6.4 using https://deb-archive.kamailio.org/repos/kamailio-5.6.4

I have confirmed that topos works correctly with this version, so the commit that broke things happened between 5.6.4 and 5.6.5

It might be related to how multi-homed installations interact with topos when doing double rr. Tne difference I noticed is that in 5.6.4, the topos substitution in Via is:
* inbound: Via: SIP/2.0/UDP 195.167.21.66:5060;branch=z9hG4bKq27z808ysq87yrzq6vp8m26yq;Role=3;Hpt=8e88_16
* outbound: Via: SIP/2.0/UDP 172.30.154.1;branch=z9hG4bKae0b.fce5449c22b5e79eb01d4f1ab3f7c014.0

That is kamailio replaces the hop with its internal interface. With topos on in 5.6.5, the behaviour is different for the UPDATE:
* inbound: Via: SIP/2.0/UDP 195.167.21.66:5060;branch=z9hG4bK1jo121j8j2h5h3wzh2mzj51q5;Role=3;Hpt=8ea8_16
* outbound: Via: SIP/2.0/UDP 185.73.42.241;branch=z9hG4bKc45b.e6226bcf14264ae3b8674dd25a71191c.0

185.73.42.241 is an interface on the same instance, but represents its "public" interface. Additionally, it happens to reside on a VRF, so the 200OK never reaches it because the routing table of the UAS directs it to another host with the same IP.

Hopefully this is enough to get an idea of what might have gone wrong? Thanks!

On Thu, 15 Feb 2024 at 15:55, George Diamantopoulos <georgediam@gmail.com> wrote:
Hello all,

I've noticed that there seems to be a regression with the topos module, more specifically the redis flavour, but I'm assuming the storage backend shouldn't make a difference.
I have confirmed this affects both 5.6.5 and 5.7-nightly, so I'm assuming some backported commit is to blame. Kamailio 5.6.4 used previously, to the best of my memory, was not affected.

Early dialog UPDATEs sent from the callee seem to be somehow malformed, since the 200 OK the UAS produces goes directly to the UAC despite having executed record_route() for the original INVITE. I can't imagine how this is possible, I thought responses always honour the Via header and record route shouldn't play a role in this case, right?

Simply turning topos off restores the intended behaviour, however, so I can't help but think this is somehow related. Here's two call flows demonstrating the behaviour:
* Topos on, 200 OK to UPDATE missing: https://pastebin.com/raw/J0zQeM5g
* Topos off, 200 OK to UPDATE routed correctly: https://pastebin.com/raw/49yErezb

I was wondering if anyone is aware of any commits that might be responsible for this. Additionally, is there an archive of debian packages with previous point releases so that I can confirm this regression with the latest versions?

Thank you!

Best regards,
George