[Home]

Summary:ASTERISK-26016: Dialplan execution error in h ext
Reporter:gzivdo (gzivdo)Labels:
Date Opened:2016-05-12 00:57:20Date Closed:2016-05-12 14:02:56
Priority:MajorRegression?
Status:Closed/CompleteComponents:PBX/pbx_config
Versions:11.13.1 Frequency of
Occurrence
Constant
Related
Issues:
Environment:Debian 8, asterisk from package repositoryAttachments:
Description:Asterisk after last h ext priority suddenly start execute _. ext from next priority number.
Sample dialplan to reproduce:
{code}
[ivr]
exten => _.,1,Answer
   same => n,Set(isstored=1)
   same => n,Set(LIMIT_PLAYAUDIO_CALLER=yes)
   same => n,Set(LIMIT_WARNING_FILE=beep)
   same => n,agi(/etc/asterisk/agi-timelimit-and-subscribe.py)
   same => n,hangup()

exten => h,1,NOOP(timelimit hangup isstored=${isstored}, call_id=${id1})
   same => n,GotoIf($["${isstored}" == "1"]?end)
   same => n,AGI(/etc/asterisk/timelimit-hangup.agi)
   same => n(end),Noop(hangup timelimit end)
{code}


Dialplan debug:
{code}
   -- Executing [123@ivr:1] Answer("SIP/101-00000024", "") in new stack
      > 0x7fc18c016660 -- Probation passed - setting RTP source address to xxx
   -- Executing [123@ivr:2] Set("SIP/101-00000024", "isstored=1") in new stack
   -- Executing [123@ivr:3] Set("SIP/101-00000024", "LIMIT_PLAYAUDIO_CALLER=yes") in new stack
   -- Executing [123@ivr:4] Set("SIP/101-00000024", "LIMIT_WARNING_FILE=beep") in new stack
   -- Executing [123@ivr:5] AGI("SIP/101-00000024", "/etc/asterisk/agi-timelimit-and-subscribe.py") in new stack
   -- Launched AGI Script /etc/asterisk/agi-timelimit-and-subscribe.py
      > 0x7fc18c016660 -- Probation passed - setting RTP source address to xxx
/etc/asterisk/agi-timelimit-and-subscribe.py: Client 101 remaining time -53.8578059673
   -- Playing './ivrmenu/noquota' (escape_digits=) (sample_offset 0)
   -- <SIP/101-00000024>AGI Script /etc/asterisk/agi-timelimit-and-subscribe.py completed, returning 4
 == Spawn extension (ivr, 123, 5) exited non-zero on 'SIP/101-00000024'
   -- Executing [h@ivr:1] NoOp("SIP/101-00000024", "timelimit hangup isstored=1, call_id=") in new stack
   -- Executing [h@ivr:2] GotoIf("SIP/101-00000024", "1?end") in new stack
   -- Goto (ivr,h,4)
   -- Executing [h@ivr:4] NoOp("SIP/101-00000024", "hangup timelimit end") in new stack
   -- Executing [h@ivr:5] AGI("SIP/101-00000024", "/etc/asterisk/agi-timelimit-and-subscribe.py") in new stack
   -- Launched AGI Script /etc/asterisk/agi-timelimit-and-subscribe.py
   -- <SIP/101-00000024>AGI Script /etc/asterisk/agi-timelimit-and-subscribe.py completed, returning 0
   -- Executing [h@ivr:6] Hangup("SIP/101-00000024", "") in new stack
{code}


As we see here, it should stop at h@ivr:4, but it execute non existing h@ivr:5 and h@ivr:6, which is _.,5 and _.6.
agi just stream one audio in that case, do verbose output once  and exit with agi hangup
Comments:By: Asterisk Team (asteriskteam) 2016-05-12 00:57:21.197-0500

Thanks for creating a report! The issue has entered the triage process. That means the issue will wait in this status until a Bug Marshal has an opportunity to review the issue. Once the issue has been reviewed you will receive comments regarding the next steps towards resolution.

A good first step is for you to review the [Asterisk Issue Guidelines|https://wiki.asterisk.org/wiki/display/AST/Asterisk+Issue+Guidelines] if you haven't already. The guidelines detail what is expected from an Asterisk issue report.

Then, if you are submitting a patch, please review the [Patch Contribution Process|https://wiki.asterisk.org/wiki/display/AST/Patch+Contribution+Process].

By: Joshua C. Colp (jcolp) 2016-05-12 04:53:14.420-0500

This is not a bug. This is the way the dialplan works, when the next priority is moved to it will find the next closest match.

By: gzivdo (gzivdo) 2016-05-12 13:58:57.115-0500

Please look again at my post. There is no next closest priority in h, 4 is last. Call ended channel was hangup.
Or h matched _.?

By: Asterisk Team (asteriskteam) 2016-05-12 13:58:57.229-0500

This issue has been reopened as a result of your commenting on it as the reporter. It will be triaged once again as applicable.

By: Joshua C. Colp (jcolp) 2016-05-12 14:02:56.079-0500

h matched _. which is why when you use it a warning is output on the console.



By: gzivdo (gzivdo) 2016-05-12 15:49:06.854-0500

thanks for clarifying things