Upgraded to Asterisk 18.1 (pjsip) "s" in demo no longer works

We are testing on a private non-internet connected network.
I have always be able to anonymously connect to the demo for testing Internally on the LAN
without having to authenticate.
This is a handy test and I wish to continue using this.
Asterisk 18.1 /pjsip has some kind of problem where this no longer works.
If I send an INVITE to IP address it does not work.
It always used to in older versions of asterisk and chan_sip.

I have to now send an INVITE to “s@X.X.X.X” port 5060 instead of only the IP address.
This is extremely inconvenient in our use case.

If I try to make a call to just the IP address I get:
localhostCLI> pjsip show history
No. Timestamp (Dir) Address SIP Message
===== ========== ============================== ===================================
localhost
CLI> pjsip show history
No. Timestamp (Dir) Address SIP Message
===== ========== ============================== ===================================
00000 1606350838 * <== 10.73.73.134:5060 INVITE sip:10.73.73.133 SIP/2.0
00001 1606350838 * ==> 10.73.73.134:5060 SIP/2.0 484 Address Incomplete
00002 1606350838 * <== 10.73.73.134:5060 ACK sip:10.73.73.133 SIP/2.0

But if I dial “s@IPaddress” I get the demo as would also be expected with just the IP.

00003 1606350903 * <== 10.73.73.134:5060 INVITE sip:s@10.73.73.133 SIP/2.0
00004 1606350903 * ==> 10.73.73.134:5060 SIP/2.0 100 Trying
00005 1606350904 * ==> 10.73.73.134:5060 SIP/2.0 200 OK
00006 1606350904 * <== 10.73.73.134:5060 ACK sip:10.73.73.133:5060 SIP/2.0
00007 1606350905 * <== 10.73.73.134:5060 BYE sip:10.73.73.133:5060 SIP/2.0
00008 1606350905 * ==> 10.73.73.134:5060 SIP/2.0 200 OK

To PACKET:

II
II…ÄÄHINVITE sip:10.73.73.133 SIP/2.0
Via: SIP/2.0/UDP 10.73.73.134;branch=z9hG4bKc90706e09DD14231
From: “VVX 250” sip:VVX250@10.73.73.134;tag=72322C1A-28A41633
To: sip:10.73.73.133
CSeq: 1 INVITE
Call-ID: 77aabe8baa112e156d3dd77953efd7ca
Contact: sip:VVX250@10.73.73.134
Allow: INVITE,ACK,BYE,CANCEL,OPTIONS,INFO,MESSAGE,SUBSCRIBE,NOTIFY,PRACK,UPDATE,REFER
User-Agent: PolycomVVX-VVX_250-UA/5.9.5.0614
Accept-Language: en
Supported: replaces,100rel
Allow-Events: conference,talk,hold
Max-Forwards: 70
Content-Type: application/sdp
Content-Length: 350

v=0
o=- 1574262969 1574262969 IN IP4 10.73.73.134
s=Polycom IP Phone
c=IN IP4 10.73.73.134
t=0 0
a=sendrecv
m=audio 2232 RTP/AVP 9 102 0 8 18 127
a=rtpmap:9 G722/8000
a=rtpmap:102 G7221/16000
a=fmtp:102 bitrate=32000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:18 G729/8000
a=fmtp:18 annexb=no
a=rtpmap:127 telephone-event/8000

Response Packet:

SIP/2.0 484 Address Incomplete
Via: SIP/2.0/UDP 10.73.73.134;rport=5060;received=10.73.73.134;branch=z9hG4bKc90706e09DD14231
Call-ID: 77aabe8baa112e156d3dd77953efd7ca
From: “VVX 250” sip:VVX250@10.73.73.134;tag=72322C1A-28A41633
To: sip:10.73.73.133;tag=RbuACSjwFaIEMl9L9nfuMw4ysph4yDsU
CSeq: 1 INVITE
Server: Asterisk PBX 18.1.0
Content-Length: 0

Would something really ‘wildcard-y’ like:

[whatever-your-inbound-context-is-named]
        exten = _!.,1,                  verbose(1,[${EXTEN}@${CONTEXT}])
        same = n,                       hangup()

yield any clues?

Do you have any other extensions that begin with “s”?

No, I do not.

Single endoint/context [Public] and demo.
there is only one s and it is in demo.

I have been doing this for many years and up to Asterisk Version 16.
It stopped working just now with a clean install of Asterisk 18.1
This is our first time installing V18.

No clues at all but pasting those two lines ahead of:
Demo makes it work.
And I have no idea why.
Or why it does not work without.
You seem to be onto something here but I am in the dark and not sure what it is doing.

exten = _!.,1, verbose(1,[{EXTEN}@{CONTEXT}])
same = n, hangup()
;
;
exten => s,1,Wait(1) ; Wait a second, just for fun
exten => s,n,Answer() ; Answer the line
exten => s,n,Set(TIMEOUT(digit)=5) ; Set Digit Timeout to 5 seconds
exten => s,n,Set(TIMEOUT(response)=10) ; Set Response Timeout to 10 seconds
exten => s,n(restart),BackGround(demo-congrats) ; Play a congratulatory message
exten => s,n(instruct),BackGround(demo-instruct) ; Play some instructions
exten => s,n,WaitExten() ; Wait for an extension to be dialed.

== Setting global variable ‘SIPDOMAIN’ to ‘10.73.73.133’
– Executing [s@public:1] Wait(“PJSIP/anonymous-00000003”, “1”) in new stack
– Executing [s@public:2] Answer(“PJSIP/anonymous-00000003”, “”) in new stack
> 0x7f43980414f0 – Strict RTP learning after remote address set to: 10.73.73.134:2228
> 0x7f43980414f0 – Strict RTP switching to RTP target address 10.73.73.134:2228 as source
– Executing [s@public:3] Set(“PJSIP/anonymous-00000003”, “TIMEOUT(digit)=5”) in new stack
– Digit timeout set to 5.000
– Executing [s@public:4] Set(“PJSIP/anonymous-00000003”, “TIMEOUT(response)=10”) in new stack
– Response timeout set to 10.000
– Executing [s@public:5] BackGround(“PJSIP/anonymous-00000003”, “demo-congrats”) in new stack
– <PJSIP/anonymous-00000003> Playing ‘demo-congrats.ulaw’ (language ‘en’)
== Spawn extension (public, s, 5) exited non-zero on ‘PJSIP/anonymous-00000003’
– Executing [h@public:1] Verbose(“PJSIP/anonymous-00000003”, “1,[h@public]”) in new stack
[h@public]
– Executing [h@public:2] Hangup(“PJSIP/anonymous-00000003”, “”) in new stack

So the wildcard works but the s extension does not work at all and I can;t find any further info or answers
as to why it is not working in pjsip/Asterisk 18.1

Might be time to file a bug report.
Because I think it should work and have not found any solid info as to any reason that it should not work.

I’m still running ‘17’ so I can’t cobble up a relevant test.

My intent with the ‘_!.’ snippet was for you to try it as the only steps in the context – just to make sure you were really receiving a ‘s’ as the extension.

I have no clue why adding it to the context makes your other stuff work. From your log, it doesn’t look like it is executed until it catches the hangup.

Yes makes absolutely no sense.
And does not work if taken out and nothing is logged!
Also the Polycom phone does something I have never seen before.
When you hit dial it just gives you another dialtone.
It does not try to dial not does it get rejected in any way.
Nothing is logged.
I included some info on the packet capture when this happens above.
Apparently I’m the only one out there using this feature.
Still looks like I need to file a bug report on it.

Any further thoughts?
It’s time for me to file a bug report.

All I have is an old Poly IP 501…

How are you configuring the phone to dial by IP address?

Yes, I am configuring the phone to dial by IP address.
This is for testing.
It has always worked on older versions of Asterisk with chan_sip.
Not working now and I don’t see any reason why it should not.
Equally confusing is that adding the two line shown above cause it to work
But really should not. as the next command in sequence is Hangup.

But it could be that “same = n, hangup()”
Is not supposed to be in there literal like he typed it.
But so many new things that are different with pjsip I have no idea of knowing if that is true or not.

My question was much more basic

I don’t know how to tell my phone to dial by IP :slight_smile:

I don’t understand this post. ‘hangup()’ is technology agnostic.

All I was saying is that the Hangup does not execute.
And probably because It was not supposed to be entered literally the way the other person commented
with “same = n, hangup()”

When I think they meant something like
exten = _!.,n,Hangup

Instead of:
same = n, hangup()

The point of this whole post is that “s” s extension is NOT working
when the system is dialed by IP.

What kind of phone do you have?
I’m testing with Polycom.

It does in your console log above:

No, I meant ‘same = n’ but they are the ‘same’ :slight_smile: :

[public]
	exten = _!.,1,			verbose(1,[${EXTEN}@${CONTEXT}])
	same = n,				hangup()

[public1]
	exten = _!.,1,			verbose(1,[${EXTEN}@${CONTEXT}])
	exten = _!.,n,			hangup()
pbx10:newline:11:09:24> dialplan show public
[ Context 'public' created by 'pbx_config' ]
  '_!.' =>          1. verbose(1,[${EXTEN}@${CONTEXT}])           [pbx_config]
                    2. hangup()                                   [pbx_config]

-= 1 extension (2 priorities) in 1 context. =-
pbx10:newline:11:09:25> dialplan show public1
[ Context 'public1' created by 'pbx_config' ]
  '_!.' =>          1. verbose(1,[${EXTEN}@${CONTEXT}])           [pbx_config]
                    2. hangup()                                   [pbx_config]

-= 1 extension (2 priorities) in 1 context. =-

And I figured out how to dial by IP – look at the ‘soft button’ legends :slight_smile:

I think so, unless somebody above my pay grade can explain why this dialplan results in ‘484 Address Incomplete’

[ Context 'public' created by 'pbx_config' ]
  'T' =>            1. verbose(1,[${EXTEN}@${CONTEXT}])           [extensions.conf:65]
  'a' =>            1. verbose(1,[${EXTEN}@${CONTEXT}])           [extensions.conf:72]
  'e' =>            1. verbose(1,[${EXTEN}@${CONTEXT}])           [extensions.conf:73]
  'h' =>            1. verbose(1,[${EXTEN}@${CONTEXT}])           [extensions.conf:74]
  'i' =>            1. verbose(1,[${EXTEN}@${CONTEXT}])           [extensions.conf:75]
  'o' =>            1. verbose(1,[${EXTEN}@${CONTEXT}])           [extensions.conf:76]
  's' =>            1. Wait(1)                                    [extensions.conf:57]
                    2. Answer()                                   [extensions.conf:58]
                    3. Set(TIMEOUT(digit)=5)                      [extensions.conf:59]
                    4. Set(TIMEOUT(response)=10)                  [extensions.conf:60]
     [restart]      5. BackGround(demo-congrats)                  [extensions.conf:61]
     [instruct]     6. BackGround(demo-instruct)                  [extensions.conf:62]
                    7. WaitExten()                                [extensions.conf:63]
  't' =>            1. verbose(1,[${EXTEN}@${CONTEXT}])           [extensions.conf:77]
  '_n.' =>          1. verbose(1,[${EXTEN}@${CONTEXT}])           [extensions.conf:67]
  '_n' =>           1. verbose(1,[${EXTEN}@${CONTEXT}])           [extensions.conf:66]
  '_z.' =>          1. verbose(1,[${EXTEN}@${CONTEXT}])           [extensions.conf:71]
  '_z' =>           1. verbose(1,[${EXTEN}@${CONTEXT}])           [extensions.conf:70]
  '_x.' =>          1. verbose(1,[${EXTEN}@${CONTEXT}])           [extensions.conf:69]
  '_x' =>           1. verbose(1,[${EXTEN}@${CONTEXT}])           [extensions.conf:68]

-= 14 extensions (20 priorities) in 1 context. =-

And this dialplan executes as expected:

vtpv11:vtpv:12:38:58> dialplan show public
[ Context 'public' created by 'pbx_config' ]
  'T' =>            1. verbose(1,[${EXTEN}@${CONTEXT}])           [extensions.conf:65]
  'a' =>            1. verbose(1,[${EXTEN}@${CONTEXT}])           [extensions.conf:72]
  'e' =>            1. verbose(1,[${EXTEN}@${CONTEXT}])           [extensions.conf:73]
  'h' =>            1. verbose(1,[${EXTEN}@${CONTEXT}])           [extensions.conf:74]
  'i' =>            1. verbose(1,[${EXTEN}@${CONTEXT}])           [extensions.conf:75]
  'o' =>            1. verbose(1,[${EXTEN}@${CONTEXT}])           [extensions.conf:76]
  's' =>            1. Wait(1)                                    [extensions.conf:57]
                    2. Answer()                                   [extensions.conf:58]
                    3. Set(TIMEOUT(digit)=5)                      [extensions.conf:59]
                    4. Set(TIMEOUT(response)=10)                  [extensions.conf:60]
     [restart]      5. BackGround(demo-congrats)                  [extensions.conf:61]
     [instruct]     6. BackGround(demo-instruct)                  [extensions.conf:62]
                    7. WaitExten()                                [extensions.conf:63]
  't' =>            1. verbose(1,[${EXTEN}@${CONTEXT}])           [extensions.conf:77]
  '_n.' =>          1. verbose(1,[${EXTEN}@${CONTEXT}])           [extensions.conf:67]
  '_n' =>           1. verbose(1,[${EXTEN}@${CONTEXT}])           [extensions.conf:66]
  '_z.' =>          1. verbose(1,[${EXTEN}@${CONTEXT}])           [extensions.conf:71]
  '_z' =>           1. verbose(1,[${EXTEN}@${CONTEXT}])           [extensions.conf:70]
  '_x.' =>          1. verbose(1,[${EXTEN}@${CONTEXT}])           [extensions.conf:69]
  '_x' =>           1. verbose(1,[${EXTEN}@${CONTEXT}])           [extensions.conf:68]
  '_!' =>           1. verbose(1,[${EXTEN}@${CONTEXT}])           [extensions.conf:78]

-= 15 extensions (21 priorities) in 1 context. =-

Which only differs in the addition of the ‘_!’ pattern and does not show up in the console execution log.

Any progress on this?

Nope not yet.
Been super busy with work and just got sick.
I will submit something soon.