Thanks for the detailed trace, I wouldn't have spent on this without it ;-)
Its' the ACK for the OK that is not done fix_nated_contact for. In fact,
checking the getting started rtpproxy file, it seems that this error is
also found there. All messages coming from behind NAT should have the
contact fixed.
Strictly speaking, RFC3261 states that the dialog state should be
created from the information found in the INVITE, not the ACK on an OK.
Your BYE generating entity does this error. I have seen this problem
before, but has not really thought about it from the getting started
config file perspective.
It is thus safer to change Contact on ALL messages behind NAT,
regardless of they are loose routed or not.
g-)
Fabio Macchi wrote:
Hi Greger,
I attached an ethereal SIP call trace of a test call ( summary and
detailed, I simple maskerade final ip numbers ): below only the INVITE
relayed from proxy to gateway:
Session Initiation Protocol
Request-Line: INVITE sip:9999001234@194.244.gatewayIP:5060 SIP/2.0
Method: INVITE
[Resent Packet: False]
Message Header
Record-Route: <sip:194.244.Proxy__IP;ftag=12e1e2e19d527792;lr=on>
Via: SIP/2.0/UDP 194.244.Proxy__IP;branch=z9hG4bKb24f.5133a2c4.0
Transport: UDP
Sent-by Address: 194.244.Proxy__IP
Branch: z9hG4bKb24f.5133a2c4.0
Via: SIP/2.0/UDP
1.255.ua_priv__IP;rport=1176;received=213.156.ua_pub_IP;branch=z9hG4bK35ca7adf63e3094f
Transport: UDP
Sent-by Address: 1.255.ua_priv__IP
RPort: 1176
Received: 213.156.ua_pub_IP
Branch: z9hG4bK35ca7adf63e3094f
From: "000003"
<sip:000003@194.244.Proxy__IP>;tag=12e1e2e19d527792
SIP Display info: "000003"
SIP from address: sip:000003@194.244.Proxy__IP
SIP tag: 12e1e2e19d527792
To: <sip:9999001234@194.244.Proxy__IP>
SIP to address: sip:9999001234@194.244.Proxy__IP
Contact: <sip:000003@213.156.ua_pub_IP:1176>
Contact Binding: <sip:000003@213.156.ua_pub_IP:1176>
URI: <sip:000003@213.156.ua_pub_IP:1176>
SIP contact address: sip:000003@213.156.ua_pub_IP:1176
Supported: replaces
Call-ID: 953e8996cfcc4ccc(a)1.255.ua_priv__IP
CSeq: 60577 INVITE
Sequence Number: 60577
Method: INVITE
User-Agent: Grandstream HT386 1.0.3.64 FXS0
Max-Forwards: 16
Allow: INVITE,ACK,CANCEL,BYE,NOTIFY,REFER,OPTIONS,INFO,SUBSCRIBE
Content-Type: application/sdp
Content-Length: 327
Message body
As you can see, contact informations are correctly fixed with the
pubblic UA address, but when the callee hungs up, the BYE is relayed
to the private IP address: am I missing something ?
In this invite I see UA private address only in VIA: does BYE look to
this parameter ?
Later caller hangs up too, and the OK is relayed to the correct IP/port.
Any help would be high appreciate, thanks in advance.
Fabio