Hi Jeremy,

Indeed, seems to be an incompatibility here...What I would suggest is a bit of a trick, to manually handle the NATed contact in a dialog variable...Haven;t tried it, just an idea.

On initial INVITE :

modparam("nathelper", "received_avp", "$avp(contact)")
...
topology_hiding();
if (nat_uac_test()) {
        fix_nated_register(); # puts the fix contact into received avp
        $dlg_val(caller_contact) = $avp(contact);
}
...


And for sequential requests:
...
loose_route();
...
if ( match_dialog() ) {
    # sequential request from callee to caller?
    if ($DLG_dir=="UPSTREAM") $ru = $dlg_val(caller_contact) ;
}


Again, not tested, not sure it will work, but just an idea :)

Regards,
Bogdan

On 09/13/2011 07:30 PM, Jeremy Childs wrote:
I'm having a problem with the dialog module's topology hiding when a UA is behind a NAT.

If I call

if (nat_uac_test()) {
    fix_nated_contact();
}
topology_hiding();

The Contact header is rewritten twice - once by fix_nated_contact() and again by topology_hiding(). This results in an invalid contact header.

Is there an obvious way I'm missing that could make these two modules coexist, or is the best solution to add NAT knowledge to dlg_tophiding.c? This seems like a lot of code to duplicate.


_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users


--
Bogdan-Andrei Iancu
OpenSIPS eBootcamp - 19th of September 2011
OpenSIPS solutions and "know-how"

_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

Reply via email to