Dear list,
I have situation where SIP UA is behind NAT, that maps everything to ports above number 61000. I use nathelper, rtpproxy and SER 0.8.12. Everything works fine.
Until I have UA that does not send "Contact" field in BYE (or OK for BYE) during call termination. In this case SER is forwarding responses not to NAT-ed port, but to port 5060.
QUESTION: What can be done to correct this situation? Is this improved in new SER releases?
Sequence is as follows:
IP_of_A:61001 -> IP_of_proxy:5060 BYE sip:B@IP_of_proxy loose_route ...
IP_of_proxy:5060 -> IP_of_B:5060 BYE sip:B@IP_of_B ...
IP_of_B:5060 -> IP_of_proxy:5060 SIP/2.0 200 OK ...
IP_of_proxy:5060 -> IP_of_A:5060 <WRONG! Should be 61001> SIP/2.0 200 OK ...
It does not happen when terminating UA sends "Contact" field in first BYE.
... I answer myself:
I overlooked a mistake in regexp, in my loose_route section, when checking a condition to use force_rport():
I think that best thing is to use nat_uac_test("3") ;-)))
Was wrong:
# Rport section if (search("^(Contact|m|Via): .*@(192.168.|10.|172.16)")) { ... force_rport(); ... };
Should be:
# Rport section if (search("^(Contact|m|Via): .*(192.168.|10.|172.16)")) { ... force_rport(); ... };
Sorry for that. ;-)
Arek Bekiersz wrote:
Dear list, I have situation where SIP UA is behind NAT, that maps everything to ports above number 61000. I use nathelper, rtpproxy and SER 0.8.12. Everything works fine.