[asterisk-bugs] [Asterisk 0014615]: exten => ANSWER not found when extenpatternmatchnew=yes

Asterisk Bug Tracker noreply at bugs.digium.com
Fri Mar 13 16:08:39 CDT 2009


A NOTE has been added to this issue. 
====================================================================== 
http://bugs.digium.com/view.php?id=14615 
====================================================================== 
Reported By:                steinwej
Assigned To:                
====================================================================== 
Project:                    Asterisk
Issue ID:                   14615
Category:                   Core/PBX
Reproducibility:            always
Severity:                   minor
Priority:                   normal
Status:                     confirmed
Asterisk Version:           1.6.0.6 
Regression:                 No 
SVN Branch (only for SVN checkouts, not tarball releases): N/A 
SVN Revision (number only!):  
Request Review:              
====================================================================== 
Date Submitted:             2009-03-06 09:25 CST
Last Modified:              2009-03-13 16:08 CDT
====================================================================== 
Summary:                    exten => ANSWER not found when
extenpatternmatchnew=yes
Description: 
Upgraded from 1.4 to 1.6.0.6, dialplan from 1.4 tested with
extenpatternmatchnew=yes

[from_meridian_test]
exten => 333,1,NoOp(Starting Test, exten 333)
exten => 333,n,Goto(answer,1)
exten => 333,n,Hangup

exten => answer,1,NoOp(Test no answer)
exten => answer,n,Playback(vm-goodbye)
exten => answer,n,Hangup

exten => is-BUSY,1,NoOp(Test now busy)
exten => is-BUSY,n,Playback(vm-goodbye)
exten => is-BUSY,n,Hangup

A call to the above 333 results in a Goto(answer,1) and everything is
expected.

But when I change this to the following dialplan, the exten is not found:

[from_meridian_test]
exten => 333,1,NoOp(Starting Test, exten 333)
exten => 333,n,Goto(ANSWER,1)
exten => 333,n,Hangup

exten => ANSWER,1,NoOp(Test no answer)
exten => ANSWER,n,Playback(vm-goodbye)
exten => ANSWER,n,Hangup

exten => is-BUSY,1,NoOp(Test now busy)
exten => is-BUSY,n,Playback(vm-goodbye)
exten => is-BUSY,n,Hangup

this results in:

*CLI> console dial 333 at from_meridian_test
  == Console is full duplex
*CLI> [Mar  6 16:20:15] NOTICE[6474]: console_video.c:130
console_video_start: voice only, console video support not present
    -- Executing [333 at from_meridian_test:1] NoOp("Console/dsp", "Starting
Test, exten 333") in new stack
    -- Executing [333 at from_meridian_test:2] Goto("Console/dsp",
"ANSWER,1") in new stack
    -- Goto (from_meridian_test,ANSWER,1)
[Mar  6 16:20:15] WARNING[6513]: pbx.c:3769 __ast_pbx_run: Channel
'Console/dsp' sent into invalid extension 'ANSWER' in context
'from_meridian_test', but no invalid handler
 << Hangup on console >>

But show dialplan gives:
*CLI> dialplan show from_meridian_test
[ Context 'from_meridian_test' created by 'pbx_config' ]
  '333' =>          1. NoOp(Starting Test, exten 333)            
[pbx_config]
                    2. Goto(ANSWER,1)                            
[pbx_config]
                    3. Hangup()                                  
[pbx_config]
  'ANSWER' =>       1. NoOp(Test no answer)                      
[pbx_config]
                    2. Playback(vm-goodbye)                      
[pbx_config]
                    3. Hangup()                                  
[pbx_config]
  'is-BUSY' =>      1. NoOp(Test now busy)                       
[pbx_config]
                    2. Playback(vm-goodbye)                      
[pbx_config]
                    3. Hangup()                                  
[pbx_config]

-= 3 extensions (9 priorities) in 1 context. =-


Further testing shows: exten => Answer works o.k. but exten => ANswer does
not work anymore

So, I can not evaluate DIALSTATUS after dial.
======================================================================
Relationships       ID      Summary
----------------------------------------------------------------------
has duplicate       0014608 Goto(s-${DIALSTATUS},1) for status ANSW...
====================================================================== 

---------------------------------------------------------------------- 
 (0101760) mmichelson (administrator) - 2009-03-13 16:08
 http://bugs.digium.com/view.php?id=14615#c101760 
---------------------------------------------------------------------- 
I tracked down what I thought was the memory leak. It turns out that there
isn't one at all. I thought that the pattern match tree was being created
twice for one of my contexts, but it turns out that it was being created
when app_queue was trying to poll the device state of some local channels,
then was getting deleted when the context merging operation was done when
the dialplan was loaded. Once the dialplan is loaded, there is a more
"permanent" context loaded into memory which needs the pattern-matching
tree created for it, so we create the pattern match tree for this context.
This is the pattern match tree which stays in memory until the dialplan is
reloaded.

So, the memory that I thought was leaking was properly being freed after
all. Since my tests are running well, I went ahead and posted a code review
at http://reviewboard.digium.com/r/194/

After re-reading your latest note, I realize that the comment I made in
the "testing done" section about your testing with your dialplan may not be
100% accurate, but you did test some things that I did not. 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2009-03-13 16:08 mmichelson     Note Added: 0101760                          
======================================================================




More information about the asterisk-bugs mailing list