Using the Freepbx GUI 184.108.40.206 I modified the callerid source for my trunk that was working under pjsip, and when I reloaded the config, the trunk no longer worked. Making an outbound call, I get the following in my /var/asterisk/full.
Checked the obvious to see that I didn’t change anything related to the name of the trunk, and everything is in agreement. Looking in the pjsip.endpoint.conf file the trunk entry looks good. The “outbound_auth=” has the trunk name in it, but there in no section in the file for that stores the actual authentication. Oddly, running the CLI and issuing the "pjsip show registrations does show the trunk as registered.
So using the Freepbx GUI to manage the trunk, why now did the pjsip trunk suddenly stop being found as an endpoint which in turn seems to prevent pjsip from creating a channel for the trunk?
Been troubleshooting for a few days now, this is my home system, so I can keep it down for s bit, but I would like to solve this issue so I can avoid it in the future.
[2020-01-04 12:51:20] VERBOSE[C-00000003] pbx.c: Executing [[email protected]:26] Dial(“PJSIP/2201-00000002”, “PJSIP/[email protected],300,Tb(func-apply-sipheaders^s^1,(4))”) in new stack
[2020-01-04 12:51:20] ERROR chan_pjsip.c: Unable to create PJSIP channel - endpoint ‘Teli-Inbound’ was not found
[2020-01-04 12:51:20] WARNING[C-00000003] app_dial.c: Unable to create channel of type ‘PJSIP’ (cause 3 - No route to destination)
[2020-01-04 12:51:20] VERBOSE[C-00000003] app_dial.c: Everyone is busy/congested at this time (1:0/0/1)
As @jcolp has mentioned before, the issue here is a potential for a race condition and not all systems are similarly affected. I’m not aware of a specific configuration that can reliably reproduce it, nor have I ever seen it on a system I control.
FreePBX 13 didn’t have the gui option to enable, but pjsip transports had reload enabled by default until only very recently. For years this setting being enabled was under the radar and not an issue until the latest versions of Asterisk 13 were published, and users started reporting issues. In Asterisk SIP Settings ver. v220.127.116.11, transport allow reload is disabled and can’t be enabled in the gui.
It also is the case that the default setting in 14 did not appear to be an issue for quite a while, again corresponding recent versions of Asterisk. Starting in SIP Settings module versions 18.104.22.168 and 22.214.171.124, this value is disabled by default. Any new install or upgrade from 13 that gets one of the these versions will have it disabled by default. As of right now, an older version is bundled with the current ISOs, but that will be resolved at some point when new ISOs are created.
edit: latest versions of 14/15 Asterisk SIP Settings will throw a dashboard error when transport reload is enabled:
There is nothing that is solved in Asterisk itself. PJSIP just fundamentally doesn’t support it, because it originates primarily from the world of phones where you can then just restart the phone and have it apply. To that end noone has spent any time improving it.
Things are working now, but for completeness the quoted part is incorrect. Your asterisk version is independent of this or any other PBX module version. You can see the Asterisk version by browsing to Reports, Asterisk Info.
When I ran asterisk-version-switch, it provided 13, 15, and 16 as choices. To me that indicates something lower than 13 was likely where I was at. Regardless, I do not know of any way to discover what was there previously.
I must conclude that an older version of Asterisk combined with FreePBX 15 was the root cause since the issue disappeared upon upgrading to Asterisk 16.
Having been in the IT industry for more than 4 decades, I know of plenty of times where there is nothing wrong with package A and there is nothing wrong with package B, but package A plus package B results in something not functioning. I am chalking this issue up to that.
And most like someone who has only used PJSIP within FreePBX.
Well enjoy it while you can. Chan_SIP is officially deprecated. It doesn’t get support unless someone in the community steps up and does it. It also is on the execution list, as in, within the next 4 years it becomes eligible to be removed completely. Also, as of v17 Chan_SIP is noload so you have to tell Asterisk to load and use Chan_SIP otherwise PJSIP is the only active SIP driver.