I am using an OpenSIPS 1.9 (current git) instance with 2 IP addresses (public and private) and mhomed=1
It seems Ack is not detected as part of dialog with match_dialog()
OpenSIPS repeatedly loops the ack to its own IP address
A bit more information on this:
I have 2 servers (located in different parts of the country) both running OpenSIPS using Dispatcher to loadbalance Freeswitch (FreeSwitch as the B2BUA)
Callflow (per server):
OUTSIDE <-> OpenSIPS <-> FS_External_UA <-> FS_Internal_UA <-> OpenSIPS <-> INSIDE
Using the topology_hiding function within the dialog module is necessary for me because I have a softswitch internally that absolutely will not accept an invite with more than one Via header.
Both servers have the exact same configuration (different IP addresses)
If I hairpin a call:
INSIDE <-> OpenSIPS <-> FS_INTERNAL_UA <-> OpenSIPS <-> INSIDE
I do not have the problem
If I place a call from Inside of one server out to the outside of the other server
INSIDE <-> (SERVER1) <---> OUTSIDE <-> (SERVER2) <-> INSIDE
The Ack messages loop when arriving as Server2 Outside
My first guess at the cause of the problem was that both servers are using "did" as the parameter to store dialog ID.
I have tried change this with
modparam("dialog", "rr_param", "vdi") (on server1)
modparam("dialog", "rr_param", "gdi") (on server2)
However, this doesn't seem to be working as both are still using "did=" in Contact header.
I have just pushed to 1.8, 1.9 and trunk a fix for this.
The topo hiding in dialog was not properly using the rr_param cookie ( it had "did" hardcoded ).
Please re-test now.
After git pull / make all install
opensips: ERROR:core:sr_load_module: could not open module </usr>: /usr/local/lib64/opensips/modules/dialog.so: undefined symbol: rr_param
It should be fixed now, please update from GIT / SVN