Steve Murphy
20d24e1027
Rescaled the weights of the patterns to give something more independent of pattern length; and make . less likely to win. Question: which should win for 14102241145-- _1xxxxxxx. or _XXXXXXXXXXX -- right now, the pure X pattern will win.
...
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89272 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-14 18:05:50 +00:00
Steve Murphy
225c94d950
A further problem highlighted by 11233 has been resolved; a certain combination of patterns in a certain order, led to a malformed trie, due to a ptr not being initialized in the loop. Also, some tree printing prettifications.
...
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89271 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-14 15:43:30 +00:00
Kevin P. Fleming
a34bbab643
use simpler technique for removing known entries from lists
...
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89259 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-14 00:54:38 +00:00
Steve Murphy
fd1f6df25f
This hopefully will fix the re-opened 11233. Hadn't covered the case of a context with no patterns. (blush)
...
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89257 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-13 23:43:41 +00:00
Steve Murphy
f0a7e86177
closes issue #11233 -- where some fine points in the algorithm to build the tree needed to be corrected. Many thanks for the test case, jtodd
...
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89256 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-13 21:19:11 +00:00
Jason Parker
50879dcb1d
Merged revisions 89194 via svnmerge from
...
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r89194 | qwell | 2007-11-12 14:46:52 -0600 (Mon, 12 Nov 2007) | 1 line
Fix a typo pointed out by De_Mon on #asterisk-dev
........
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89195 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-12 20:48:57 +00:00
Steve Murphy
98429d37b2
Based on a note in asterisk-dev by Brian Capouch, I determined I too agressive in not initializing arrays passed to pbx_substitute_variables_xxxx; I reviewed the code (again) and hopefully found every possible spot where substitute_variables is called conditionally, and made sure the char array involved was set to a null string.
...
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89186 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-12 18:44:36 +00:00
Steve Murphy
a897556f7f
This is the perhaps the biggest, boldest, most daring change I've ever committed to trunk. Forgive me in advance any disruption this may cause, and please, report any problems via the bugtracker. The upside is that this can speed up large dialplans by 20 times (or more). Context, extension, and priority matching are all fairly constant-time searches. I introduce here my hashtables (hashtabs), and a regression for them. I would have used the ast_obj2 tables, but mine are resizeable, and don't need the object destruction capability. The hashtab stuff is well tested and stable. I introduce a data structure, a trie, for extension pattern matching, in which knowledge of all patterns is accumulated, and all matches can be found via a single traversal of the tree. This is per-context. The trie is formed on the first lookup attempt, and stored in the context for future lookups. Destruction routines are in place for hashtabs and the pattern match trie. You can see the contents of the pattern match trie by using the 'dialplan show' cli command when 'core set debug' has been done to put it in debug mode. The pattern tree traversal only traverses those parts of the tree that are interesting. It uses a scoreboard sort of approach to find the best match. The speed of the traversal is more a function of the length of the pattern than the number of patterns in the tree. The tree also contains the CID matching patterns. See the source code comments for details on how everything works. I believe the approach general enough that any issues that might come up involving fine points in the pattern matching algorithm, can be solved by just tweaking things. We shall see. The current pattern matcher is fairly involved, and replicating every nuance of it is difficult. If you find and report problems, I will try to resolve than as quickly as I can. The trie and hashtabs are added to the existing context and exten structs, and none of the old machinery has been removed for the sake of the multitude of functions that use them. In the future, we can (maybe) weed out the linked lists and save some space.
...
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89129 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-09 16:00:22 +00:00
Kevin P. Fleming
edc78d6023
improve linked-list macros in two ways:
...
- the *_CURRENT macros no longer need the list head pointer argument
- add AST_LIST_MOVE_CURRENT to encapsulate the remove/add operation when moving entries between lists
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89106 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-08 05:28:47 +00:00
Joshua Colp
f440f8ba48
Fix up some PBX logic that became broken. The code would exit prematurely when it should have been collecting more digits.
...
(closes issue #11175 )
Reported by: pj
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89072 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-06 23:08:36 +00:00
Mark Michelson
5a4867543d
"show application <foo>" changes for clarity.
...
(closes issue #11171 , reported and patched by blitzrage)
Many thanks!
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89044 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-06 19:04:45 +00:00
Russell Bryant
9bfd82cec2
Merged revisions 88805 via svnmerge from
...
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r88805 | russell | 2007-11-05 16:07:54 -0600 (Mon, 05 Nov 2007) | 12 lines
After seeing crashes related to channel variables, I went looking around at the
ways that channel variables are handled. In general, they were not handled in
a thread-safe way. The channel _must_ be locked when reading or writing from/to
the channel variable list.
What I have done to improve this situation is to make pbx_builtin_setvar_helper()
and friends lock the channel when doing their thing. Asterisk API calls almost
all lock the channel for you as necessary, but this family of functions did not.
(closes issue #10923 , reported by atis)
(closes issue #11159 , reported by 850t)
........
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@88934 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-06 14:08:54 +00:00
Luigi Rizzo
08b10da53b
Simplify the implementation and the API for stringfields;
...
details and examples are in include/asterisk/stringfields.h.
Not applicable to older branches except for 1.4 which will
receive a fix for the routines that free memory pools.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@88454 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-04 19:44:31 +00:00
Tilghman Lesher
e8c781b215
Add pbx_lua as a method of doing extensions
...
Reported by: mnicholson
Patch by: mnicholson
Closes issue #11140
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@88250 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-02 15:36:34 +00:00
Tilghman Lesher
b5c2bcb169
'h' extension doesn't execute past first priority
...
Reported by: dimas
Patch by: dimas
Closes bug #11146
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@88209 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-02 12:54:31 +00:00
Tilghman Lesher
90db1316ed
Modify WaitExten to include an optional dialtone
...
Closes issue #10783
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@88183 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-01 23:26:35 +00:00
Steve Murphy
63f2f04cf4
This commits the performance mods that give the priority processing engine in the pbx, a 25-30% speed boost. The two updates used, are, first, to merge the ast_exists_extension() and the ast_spawn_extension() where they are called sequentially in a loop in the code, into a slightly upgraded version of ast_spawn_extension(), with a few extra args; and, second, I modified the substitute_variables_helper_full, so it zeroes out the byte after the evaluated string instead of demanding you pre-zero the buffer; I also went thru the code and removed the code that zeroed this buffer before every call to the substitute_variables_helper_full. The first fix provides about a 9% speedup, and the second the rest. These figures come from the 'PIPS' benchmark I describe in blogs, conf. reports, etc.
...
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@88166 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-01 22:26:51 +00:00
Joshua Colp
284721fdb1
Drop any more references to type in the Exception dialplan function.
...
(closes issue #11134 )
Reported by: blitzrage
Patches:
exception_patch.txt uploaded by blitzrage (license 10)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@87953 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-01 00:04:43 +00:00
Tilghman Lesher
b6ec350910
Optimize pbx_substitute_variables
...
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@87811 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-31 15:46:41 +00:00
Jason Parker
e985a00a32
Update documentation to give an example of how to use the return status of RaiseException
...
Closes issue #11117 , patch by blitzrage (yay blitzrage)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@87626 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-30 18:28:55 +00:00
Mark Michelson
e0d13e169c
The priority gets incremented after raising an exception, so the priority should be set to 0
...
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@87608 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-30 17:07:26 +00:00
Mark Michelson
e5f87bbac3
Jumped the gun a bit in the RaiseException app. It would always return -1
...
since it checked for the existence of something that will never exist.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@87573 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-30 16:36:29 +00:00
Jason Parker
ebe4050128
Switch from AST_CLI (formerly NEW_CLI) to AST_CLI_DEFINE, since the former didn't make much sense
...
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@86820 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-22 20:05:18 +00:00
Jason Parker
b0f3e6097e
Convert NEW_CLI to AST_CLI.
...
Closes issue #11039 , as suggested by seanbright.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@86536 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-19 18:29:40 +00:00
Tilghman Lesher
c0fcb59d38
Merged revisions 85356 via svnmerge from
...
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r85356 | tilghman | 2007-10-10 23:35:33 -0500 (Wed, 10 Oct 2007) | 2 lines
A dollar sign by itself, not indicating a start of a variable or expression prematurely ends substitution (closes issue #10939 )
........
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@85357 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-11 04:40:56 +00:00
Joshua Colp
094e9d8397
Don't register the exception function with module information. Since it is in the core there is none and it will explode.
...
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@84613 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-04 02:01:43 +00:00
Tilghman Lesher
c2f7cc4bd4
Create a universal exception handling extension, "e" (closes issue #9785 )
...
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@84580 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-03 22:14:09 +00:00
Tilghman Lesher
5139a2f6f7
Add MSet for people who prefer the old, deprecated syntax of Set (Closes issue #10549 )
...
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@84405 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-02 18:12:49 +00:00
Jason Parker
c7a9ec1691
(issue #10724 )
...
Reported by: eliel
Patches:
res_features.c.patch uploaded by eliel (license 64)
res_agi.c.patch uploaded by seanbright (license 71)
res_musiconhold.c.patch uploaded by seanbright (license 71)
pbx.c.patch uploaded by moy (license 222)
logger.c.patch uploaded by moy (license 222)
frame.c.patch uploaded by moy (license 222)
manager.c.patch uploaded by moy (license 222)
http.c.patch uploaded by moy (license 222)
dnsmgr.c.patch uploaded by moy (license 222)
res_realtime.c.patch uploaded by eliel (license 64)
res_odbc.c.patch uploaded by seanbright (license 71)
res_jabber.c.patch uploaded by eliel (license 64)
chan_local.c.patch uploaded by eliel (license 64)
chan_agent.c.patch uploaded by eliel (license 64)
chan_alsa.c.patch uploaded by eliel (license 64)
chan_features.c.patch uploaded by eliel (license 64)
chan_sip.c.patch uploaded by eliel (license 64)
RollUp.1.patch (includes all of the above patches) uploaded by seanbright (license 71)
Convert many CLI commands to the NEW_CLI format.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@82930 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-18 22:43:45 +00:00
Joshua Colp
abe84c029f
Merged revisions 82514 via svnmerge from
...
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r82514 | file | 2007-09-16 23:00:59 -0300 (Sun, 16 Sep 2007) | 4 lines
(closes issue #10734 )
Reported by: asgaroth
Instead of passing a NULL pointer into snprintf pass "". It makes Solaris much happier.
........
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@82516 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-17 02:02:09 +00:00
Mark Michelson
3a6e79ad80
Fixes Solaris build warnings
...
(closes issue #10698 , reported and patched by snuffy)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@82283 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-12 16:24:45 +00:00
Joshua Colp
56e74f0dde
(closes issue #10603 )
...
Reported by: jmls
Patches:
pbx.diff uploaded by jmls (license 141)
Add REASON dialplan variable for when an originated call fails and the failed extension is executed.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@81372 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-30 14:42:41 +00:00
Tilghman Lesher
f8c93488d5
Fix documentation for Set (closes issue #10549 )
...
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@80817 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-24 19:50:16 +00:00
Steve Murphy
9836efb5fb
This commit closes bug 7605, and half-closes 7638. The AEL code has been redistributed/repartitioned to allow code re-use both inside and outside of Asterisk. This commit introduces the utils/conf2ael program, and an external config-file reader, for both normal config files, and for extensions.conf (context, exten, prio); It provides an API for programs outside of asterisk to use to play with the dialplan and config files.
...
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@79595 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-15 19:21:27 +00:00
Russell Bryant
668a334f85
Add another big set of doxygen documentation improvements from snuffy.
...
(closes issue #9892 )
(closes issue #10395 )
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@78541 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-07 23:04:01 +00:00
Joshua Colp
1e4bd7a192
Instead of adding the SOLARIS check to each HAVE_SYSINFO check let's just make the sysinfo autoconf logic a bit pickier about what it considers a usable sysinfo.
...
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@77878 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-01 19:37:59 +00:00
Joshua Colp
a7aaa0bbc2
Solaris does not have a sysinfo like we know of on Linux.
...
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@77876 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-01 19:12:36 +00:00
Russell Bryant
4e0947c5f1
Convert code that checks the _softhangup member of ast_channel directory to use
...
the ast_check_hangup() funciton. This function takes scheduled hangups into
account.
(closes issue #10230 , patch by Juggie)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@77858 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-01 15:39:54 +00:00
Tilghman Lesher
55b1ee298e
Merge the dialplan_aesthetics branch. Most of this patch simply converts applications
...
using old methods of parsing arguments to using the standard macros. However, the big
change is that the really old way of specifying application and arguments separated by
a comma will no longer work (e.g. NoOp,foo|bar). Instead, the way that has been
recommended since long before 1.0 will become the only method available (e.g. NoOp(foo,bar).
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@76703 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-23 19:51:41 +00:00
Russell Bryant
f1f72312bb
(closes issue #10192 )
...
Reported by: bbryant
Patches:
20070720__core_debug_by_file.patch uploaded by bbryant (license 36)
(with some modifications by me)
Tested by: russell, bbryant
This set of changes introduces the ability to set the core debug or verbose
levels on a per-file basis. Interestingly enough, in 1.4, you have the ability
to set core debug for a single file, but that functionality was accidentally
lost in the conversion of the CLI commands to the new format.
This patch improves upon what was in 1.4 by letting you set it for more than 1
file, and by also supporting verbose.
*** Janitor Project ***
This patch also introduces a new macro, ast_verb(), which is similar
to ast_debug(). Setting the per file verbose value only works for messages that
use this macro. Converting existing uses of ast_verbose() can be done like:
if (option_debug > 2)
ast_verbose(VERBOSE_PREFIX_3 "Something useful\n");
...
ast_verb(3, "Something useful\n");
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@76555 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-23 14:21:41 +00:00
Tilghman Lesher
81bc1d7af5
Merge in ast_strftime branch, which changes timestamps to be accurate to the microsecond, instead of only to the second
...
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@75706 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-18 19:47:20 +00:00
Russell Bryant
9ffd55b6f9
Merged revisions 75403 via svnmerge from
...
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r75403 | russell | 2007-07-17 15:01:12 -0500 (Tue, 17 Jul 2007) | 12 lines
(closes issue #10209 )
Reported by: juggie
Patches:
10209-trunk-2.patch uploaded by juggie
Tested by: juggie, blitzrage
In ast_pbx_run(), mark a channel as hung up after an application returned -1,
or when it runs out of extensions to execute. This is so that code can detect
that this channel has been hung up for things like making sure DeadAGI is used
on actual dead channels, and is beneficial for other things, like making sure
someone doesn't try to start spying on a channel that is about to go away.
........
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@75404 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-17 20:01:54 +00:00
Joshua Colp
344e6fd016
Change the function name slightly... just for kpfleming!
...
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@75260 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-16 18:38:28 +00:00
Joshua Colp
e498488bde
For my next trick I will make it so dialplan functions no longer need to call ast_module_user_add and ast_module_user_remove. These are now called in the ast_func_read and ast_func_write functions outside of the module.
...
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@75255 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-16 18:24:29 +00:00
Joshua Colp
b8cd949cce
Applications no longer need to call ast_module_user_add and ast_module_user_remove. This is now taken care of in the pbx_exec function outside of the application.
...
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@75200 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-16 14:39:29 +00:00
Steve Murphy
6a4efe5d5a
In regards to changes for 9508, expr2 system choking on floating point numbers, I'm adding this update to round out (no pun intended) and make this FP-capable version of the Expr2 stuff interoperate better with previous integer-only usage, by providing Functions syntax, with 20 builtin functions for floating pt to integer conversions, and some general floating point math routines that might commonly be used also. Along with this, I made it so if a function was not a builtin, it will try and find it in the ast_custom_function list, and if found, execute it and collect the results. Thus, you can call system functions like CDR(), CHANNEL(), etc, from within $\[..\] exprs, without having to wrap them in $\{...\} (curly brace) notation. Did a valgrind on the standalone and made sure there's no mem leaks. Looks good. Updated the docs, too.
...
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@73449 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-05 18:15:22 +00:00
Russell Bryant
d2a85e5f64
After some discussion on the asterisk-dev list, we determined that this approach
...
for extracting application, function, manager, and agi documentation is the wrong
one to take. The most severe problem is that the output depends on which modules
are loaded as well as compile time options, which both determine which parts are
available.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@72986 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-02 23:02:16 +00:00
Russell Bryant
9aa28d2d3d
Add "core dump funcdocs" CLI command
...
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@72922 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-02 17:11:53 +00:00
Russell Bryant
f1468915c7
change the "core dump appdocs" CLI command to use the new API for creating
...
CLI commands
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@72921 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-02 16:42:47 +00:00
Tilghman Lesher
396a37eba8
Fix trunk brokenness; also, optimize application registration
...
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@70610 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-06-20 23:31:08 +00:00