Hi Alex
Are you trying to do loop detection? If so, how about Max-Forwards?
I attempt to find a way, without using the dialog module, to determine in which loop I am.
The same old issue I am still desperately trying to solve:
Two customer behind the SAME Registrar.
CPE A => Kam Registrar => Kam Core => Kam Registrar => CPE B
I want to be able to find out, if I work on messages/replies in a transaction to CPE A or in a transaction to CPE B.
It looks like this is required to make rtpengine (on the Registrar) work by adding some counter to the callid or fromtag or whatever so rtpengine does not confuse the two different invocations.
If anyone has any idea how to solve this in a simpler way I would really love to know how.
Not routing the call via Core is not an option (core does billing, routing and dialog handling and has interconnections to other telcos, besides the registrar is intentionally 'dumb' and does not know how to route calls).
What could work (I am not sure if it would) looking at for example the first invite is if there would be a way to only keep the 2nd one.
eg:
INVITE CPE A => Registrar => Core
rtpengine processing 'offer' from A to CORE
INVITE CORE => Registrar => CPE B
rtpengine processing 'offer' from CORE to B
if this 2nc offer could 'overwrite' the first one received this may work. It does not work(*1) the way the built-in rtpengine loop detection works by just ignoring subsequent offers after the first one was received.
(*1) Maybe I have to explain what fails...
A CPE might be connected via IPv6. Interconnections with other telcos still run via legacy IPv4 same with most of the registered CPE.
So when CPE A calls with ipv6 I add address-family=IP4 to ensure that the core is getting an IPv4 SDP. But when CPE B has an IPv6 contact registered I need to set address-family=IP6 to ensure it is getting an IPv6 SDP.
If the 2nd invocation of rtpengine is dropped (actual rtpengine loop detection behavior), IPv6 CPE B is getting an IPv4 SDP.
If the 2nd invocation of rtpengine would replace the 1st invocation, then maybe, thinks could work out just fine.
Offering ICE is helping - only there are CPE which do not support ICE and therefore 488 a SDP with an unsupported protocol in the c= line even if ICE would offer a supported one.
Mit freundlichen Grüssen
-Benoît Panizzon-