Hello,
I am trying to configure the Topos module and have some questions.
# topos:msg-outgoing vs topos:msg-sending
https://www.kamailio.org/docs/modules/5.8.x/modules/topos.html#topos.e.msg_s...
I am trying to understand the difference between these two event routes(beyond the content of the SIP message ). I notice that both are invoked when OPTIONS are generated by the local Kamailio server but only msg-sending is invoked for messages transiting the Kamailio( ie proxied, not locally generated).
Is there some difference in how these event_routers are invoked beyond the content of the SIP message?
# tops -> requests/replies
When I am in event_route[topos:msg-sending] { and invoke 'drop', does this apply to the current message or does it apply to the transaction?
I have a Kamailio node with devices on either side. Let's call side A untrusted and side B trusted.
I want TOPOS happening against the untrusted device but not the trusted device.
I have found that when I invoke 'drop' on a request coming from A to B, it disables TOPOS not only on that packet, but also the reply comes from B back to A, TOPOS isn't applied when the reply exits Kamailio towards A. So if I call 'drop' on the request coming from A to B, the reply coming from B to A has no TOPOS applied.
How do I get TOPOS applied to all traffic facing a particular device while leaving that traffic un-stripped when the same traffic is interacting with other devices that are trusted?
Thanks,
David
Hi David
I want TOPOS happening against the untrusted device but not the trusted device.
Been exactly there and had to learn - this just is not possible. If topos is used, you need to use it on both legs of the call. You can not drop one side as this breaks how topos works.
So I'm not sure in what the purpose of doping topos on a really message is.
And I also want to make you aware of some known issues:
In some Situations, the Via header are not being correctly removed but passed to the other side, still revealing the topology.
Also, you may need to loop a call to yourself after topos restored the route and via header, to make loose route work.
There is an issue with parallel forking. It happens in parallel forking in situations similar to this:
Two invites are sent to two different destinations but same CallID. Both reply with 200 OK at the same time (different ToTags). Topos does not consider the ToTags but marks the 200 OK as 'processed' after the first 200 OK. So only the ACK to that first 200 OK is being correctly routed because it is expected, the second ACK can not be routed (or was is the other way round - you get the idea). Also applies to other messages, especially PRACK / 200 OK to PRACK as they are prone to happen at the same time.