All,

Setup is this:

Softswitch --> OpenSIPS Proxy/Registrar --> UAC

INVITE sip:username@uac_ip:port is sent to uac via lookup on the location
table:

---> INVITE sip:[email protected]:5063 (but destination port from UA's contact is
really 7063).
R-R us
Contact:  <sip:did@softswitchip:port>

<--------  200 OK
via them
Contact: <sip:[email protected]:5063>, which is rewritten to
sip:[email protected]:7063 because of fix_nated_contact called


-----------> ACK sip:[email protected]:7063 (sent to ua at 7063).
              R-R us

The problem is the UAC tosses out the request because it doesn't match it as
the RURI port is wrong, even though it was sent to the right place.

My question is:

If I call loose route on this without fixing up the IP, it would be relayed
to the private_ip:port pair of the UA.
If I do another lookup, the RURI is preserved with the port 7063 but sent to
the right place (in this case 7063, but the request is thrown out).

What I want to achieve is on the ACK:

duri = sip:[email protected]:5073
ruri = sip:[email protected]:5063


The initial INVITE packet has the correct duri/ruri combo, but because I
call fix_nated_contact, the softswitch rewrites the RURI (as it's supposed
to) with the Contact Header info, and opensips relays this back to the UAC
with that information.

Is there a simple convention to set the duri to be the correct destination
via lr or via doing another location lookup (hackish I guess, but even this
doesn't work for me), while preserving the RURI on the initial invite?  If i
don't rewrite the contact header, the packet is relayed back to the private
IP and seems to break NAT.

If I do another user lookup, the ruri is rewritten.  This is a phone that
doesn't exactly support RFC 3261 (a Cisco 79XX with SIP 8.0 firmware), and
doesn't support received processing.


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

Reply via email to