[asterisk-dev] extensions.conf included contexts priorities
Steve Murphy
murf at digium.com
Wed Apr 25 17:29:17 MST 2007
On Wed, 2007-04-25 at 12:50 -0400, Andrew Kohlsmith wrote:
> On Wednesday 25 April 2007 11:47 am, Steve Murphy wrote:
> > I do propose that we make the following change to the
> > extensions.conf.sample file to minimize user
> > misunderstanding/frustration over include directives.... the reason this
> > thread began...
> >
> > Do you think this might help? Is the English proper?
>
> I'd mention that wildcards are also searched depth-first, and that if a
> wildcard in the current context matches, a more specific extension in an
> included (or switched) context will NOT get executed.
>
> This is the most confusing part for me. I was under the impression (and it
> always seemed to work) that wildcards were searched DEAD LAST, since an
> included context with an extension with fewer (incl. 0) wildcards was a
> better match than an extension with more wildcards.
>
> What's scary (to me) is that my dialplans have been working just fine until
> very, very recently.
>
> -A.
OK; is this better?
Jared, Leif, could any of this help flesh out a chapter in the Asterisk
book?
murf
Index: configs/extensions.conf.sample
===================================================================
--- configs/extensions.conf.sample (revision 61639)
+++ configs/extensions.conf.sample (working copy)
@@ -140,15 +140,48 @@
;
; Contexts contain several lines, one for each step of each
; extension, which can take one of two forms as listed below,
-; with the first form being preferred. One may include another
-; context in the current one as well, optionally with a
-; date and time. Included contexts are included in the order
-; they are listed.
+; with the first form being preferred.
;
;[context]
;exten => someexten,{priority|
label{+|-}offset}[(alias)],application(arg1,arg2,...)
;exten => someexten,{priority|
label{+|-}offset}[(alias)],application,arg1|arg2...
;
+; Included Contexts
+;
+; One may include another context in the current one as well,
optionally with a
+; date and time. Included contexts are included in the order
+; they are listed.
+; The reason a context would include other contexts is for their
+; extensions.
+; The algorithm to find an extension is recursive, and works in this
+; fashion:
+; first, given a stack on which to store context references,
+; push the context to find the extension onto the stack...
+; a) Try to find a matching extension in the context at the top of
+; the stack, and, if found, begin executing the priorities
+; there in sequence.
+; b) If not found, Search the switches, if any declared, in
+; sequence.
+; c) If still not found, for each include, push that context onto
+; the top of the context stack, and recurse to a).
+; d) If still not found, pop the entry from the top of the stack;
+; if the stack is empty, the search has failed. If it's not,
+; continue with the next context in c).
+; This is a depth-first traversal, and stops with the first context
+; that provides a matching extension. As usual, if more than one
+; pattern in a context will match, the 'best' match will win.
+; Please note that that extensions found in an included context are
+; treated as if they were in the context from which the search began.
+; The PBX's notion of the "current context" is not changed.
+; Please note that in a context, it does not matter where an include
+; directive occurs. Whether at the top, or near the bottom, the effect
+; will be the same. The only thing that matters is that if there is
+; more than one include directive, they will be searched for
extensions
+; in order, first to last.
+; Also please note that pattern matches (like _9XX) are not treated
+; any differently than exact matches (like 987). Also note that the
+; order of extensions in a context have no affect on the outcome.
+;
; Timing list for includes is
;
; <time range>|<days of week>|<days of month>|<months>
--
Steve Murphy
Software Developer
Digium
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3227 bytes
Desc: not available
Url : http://lists.digium.com/pipermail/asterisk-dev/attachments/20070425/7789df81/smime.bin
More information about the asterisk-dev
mailing list