PJSIP Sends BYE With Wrong IP
Hello –
I am trying to decide if I have stumbled across a bug in PJSIP or I am just missing something. My Asterisk has two interfaces, an “internal” eth0 and an “external” eth1. In pjsip.conf, I define the following transports:
[trusted]
type=transport protocol=udp bind.xx.yy.zz:5060
[untrusted]
type=transport protocol=udp bind.4.aa.bb:5060
My internal endpoints use transport=internal and external endpoints use transport=external. I guess that’s obvious.
My netstat shows both transports listening:
Proto Recv-Q Send-Q Local Address Foreign Address State
PID/Program name udp 0 0 12.4.aa.bb:5060 0.0.0.0:*
25494/asterisk udp 0 0 10.xx.yy.xx:5060 0.0.0.0:*
25494/asterisk
Everything works fine, most of the time. INVITEs, 1XX, 2XX are sent to the right interface using the right source IP. But, when Asterisk tries to send a BYE to any internal endpoint, it sends using the external IP, but it is sent of the correct internal interface eth0. Only the IP layer is incorrect. The SIP layer has the correct IP in the Via header. From what I
can tell, only BYE is affected.
I didn’t have this problem with chan_sip. Am I just missing some configuration?
To test, I have set up the most simple extension I can think of, and it duplicates the condition:
exten => _9090,1,Answer same => n,Wait(2)
same => n,Hangup
2 thoughts on - PJSIP Sends BYE With Wrong IP
named internal and external… so that is confusing.
If you can pastebin a full (sanitized) pjsip.conf as well as an Asterisk log with verbose turned up[1], plus a SIP packet trace then we can take a look at it.
[1]: https://wiki.asterisk.org/wiki/display/AST/Collecting+Debug+Information
You are right. That is my fault that I was sanitizing the configuration for the purpose of this email and uses different names.
just my development system. I assume that the problem was resolved between the two releases.