I'm struggling with setting up opensips as an outbound proxy. My goal is to route SIP traffic from UA (behind NAT, TCP connection to opensips) through my opensips proxy to arbitrary SIP provider (e.g. betamax, gizmo5, etc..).
I currently try to intercept REGISTER messages, do fix_nat_register(), then save("location","mr") and forward it to the provider's proxy. I cannot use Path extension because it's not universally accepted. Then, when I receive incoming call, I call lookup("location") and forward the INVITE over the persistent TCP connection to the UA. However when I receive ACK from the provider's proxy, it ends up in a loop on my opensips proxy (probably because the target uri is that of my proxy). What can I do to forward the ACKs (and other in-dialog requests) to the UA?
nevermind, I found out I have to call lookup("location") even for in-dialog requests
Actually doing lookup() for in-dialog requests is wrong. The in-dialog requests must follow the route set which was predetermined by the original invite. See the relevant webinars on:
routing in SIP : http://www.opensips.org/Resources/Webinars#toc11
default opensips cfg : http://www.opensips.org/Resources/Webinars#toc8