Hi All, I've got a problem I'm not 100% sure how to resolve.
Ok the scenario is, client A is on a public interface, Client B is on a private IP address and has cflag 6 set in the location table. Client A calls Client B via Opensips. Now during the initial INVITE, opensips locates Client B, loads the information, and naturally bflag is set to 6 (my NAT flag). This then triggers mediaproxy to get involved, and the call is established correctly, media passes from Client A ----> Mediaproxy ----> Client B. Now the problem is, the Client A device (Audiocodes ATA) sends a Re-INVITE to switchover to T.38. The process works pretty much the same, but follows the loose_route path due the call already being in a dialog (i think thats the right terminology). Client B receives the Re-INVITE, however, because loose_route doesn't know about the bflag (I've check with xlog and its not set during this phase), mediaproxy is not engaged (as the INVITE is coming form Client A who is not behind NAT). So when Client B responds, the SDP is a private IP address, and the call falls apart. Now I suppose what I could do is call "use_media_proxy()" from the onreply_route if the SDP is RFC1918 (nat_uac_test("8")), however, this would engage mediaproxy for only one leg of the call and not the Client A leg. The other option is I can force mediaproxy on all calls, which works, but now I have to have RTP flowing through my links for devices that could be speaking directly to each other. Has anyone had experience with this, or an idea of how to check during the loose_route phase if the Client B sisde is behind nat, or set a flag that remains consistent throughout the entire call flow (INVITE, 200Ok, Re-INVITE, 200OK, BYE). I look forward to your assistance. Many thanks Doug _______________________________________________ Users mailing list Users@lists.opensips.org http://lists.opensips.org/cgi-bin/mailman/listinfo/users