PJSIP Sends BYE With Wrong IP

Home » Asterisk Users » PJSIP Sends BYE With Wrong IP
Asterisk Users 2 Comments

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