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.