Luigi Rizzo [Sat, 17 Nov 2007 01:49:26 +0000 (01:49 +0000)]
acinclude.m4: add a function to help checking sdl-config, gtk-config
and the like (this could be used for gtk and gtk2 as well)
Other files: add tests for sdl, sdl_image and avcodec and regenerate
configure and autoconfig.h.in
Steve Murphy [Fri, 16 Nov 2007 23:33:32 +0000 (23:33 +0000)]
My goodness, haven't handled an extension deletion. Add code to ast_context_remove_extension2() to remove an extension from the trie. Done by marking it deleted. The scoreboard won't update for it any more. Also, a couple of calls to insert hashtab had a spurious ->exten, which was removed.
Luigi Rizzo [Fri, 16 Nov 2007 22:37:17 +0000 (22:37 +0000)]
whitespace only change - adjust indentation and add some
comments on the content of these two files.
utils.h (which is included in over 150 files) contains a lot of
unrelated functions which require the inclusion of a large number
of other headers. At some point we should partition its content
in a better way.
Russell Bryant [Fri, 16 Nov 2007 22:33:24 +0000 (22:33 +0000)]
Blocked revisions 89339 via svnmerge
........
r89339 | russell | 2007-11-16 16:26:44 -0600 (Fri, 16 Nov 2007) | 5 lines
Temporarily revert revision 89325, which added md5 magic for keeping track of
what build options were used. We agreed that we should remove this before
making a 1.4 release, and then we can put it back in. Then, we can take a
month or so to play around with it to get it how we want it.
Luigi Rizzo [Fri, 16 Nov 2007 20:04:58 +0000 (20:04 +0000)]
Start untangling header inclusion in a way that does not affect
build times - tested, there is no measureable difference before and
after this commit.
In this change:
use asterisk/compat.h to include a small set of system headers:
inttypes.h, unistd.h, stddef.h, stddint.h, sys/types.h, stdarg.h,
stdlib.h, alloca.h, stdio.h
Where available, the inclusion is conditional on HAVE_FOO_H as determined
by autoconf.
Normally, source files should not include any of the above system headers,
and instead use either "asterisk.h" or "asterisk/compat.h" which does it
better.
For the time being I have left alone second-level directories
(main/db1-ast, etc.).
Steve Murphy [Fri, 16 Nov 2007 18:59:02 +0000 (18:59 +0000)]
This fixes a problem with pattern ranges; and corrects a situation in res_features, where an extension would be created with the name Zap/51, as an example. THe / is bad because it would tend to mean that the 51 is to be cid matched.
Luigi Rizzo [Fri, 16 Nov 2007 18:48:15 +0000 (18:48 +0000)]
both md5sum and variable substitutions such as ${BUILDSUM:0:8}
are not available in FreeBSD.
For the time being, put in a workaround so we can build the system,
and wait for the result of the discussion on whether we can store
the md5 as a string rather than 4 ints (if so, we won't need more
complex tricks with awk or sed for splitting the md5).
Mark Michelson [Fri, 16 Nov 2007 17:11:43 +0000 (17:11 +0000)]
Adding confirmation playback when forwarding voicemail messages. This will attempt
to play the name(s) of the person(s) to whom you are forwarding the message prior to
prompting for prepending. If no name is found, the extension is read back verbatim.
(closes issue #9046, reported and patched by jaroth)
To help combat problems where people build external modules (asterisk-addons or others) and then change the build options of the Asterisk build in a way that makes the incompatible without warning, this commit introduces an MD5 signature of the important build-time options and includes that signature into modules when they are built. When the loader loads one of these modules and notices the problem, it will emit a warning to console and refuse to initialize the module, as doing so could cause the system to be unstable or even crash.
If you upgrade to this version of Asterisk, you must rebuild *all* of your modules that came from other sources before trying to run this version. If you are using Digium's G.729 binary codec module, you will need v33 or newer.
Luigi Rizzo [Fri, 16 Nov 2007 09:51:41 +0000 (09:51 +0000)]
move the inner part of config file parsing to a separate function,
so it can be reused in the implementation of cli commands when
they have a similar syntax.
Tilghman Lesher [Thu, 15 Nov 2007 23:50:15 +0000 (23:50 +0000)]
If we're going to be passing a negative value for the size of a stringfield,
in order to indicate something, then using an UNSIGNED parameter is bad,
mmmmmkay?
Russell Bryant [Thu, 15 Nov 2007 17:27:27 +0000 (17:27 +0000)]
Merged revisions 89296 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r89296 | russell | 2007-11-15 11:19:28 -0600 (Thu, 15 Nov 2007) | 8 lines
Update the SLAStation application to account for the case where the SLA thread
has a call out to the station, but the user has pressed a line button to answer
the call instead of picking up the handset. If they do, the phone sends out a
new INVITE. So, the SLAStation app must check to see if it is picking up a
ringing trunk, and ensure that the other stations stop ringing.
(reported internally, patched by me, tested by mogorman)
Steve Murphy [Thu, 15 Nov 2007 16:30:13 +0000 (16:30 +0000)]
Perhaps I went overboard on initializing things. I can remove unnecc. stuff later. A few bug fixes. Killing small bugs on the way to killing bigger ones. Removed locking on hashtabs; there's plenty of locks already being taken. A small bug in the root_tree hashtab compare func.
Luigi Rizzo [Thu, 15 Nov 2007 16:20:47 +0000 (16:20 +0000)]
access channel locks through ast_channel_lock/unlock/trylock and not
through ast_mutex primitives.
To detect all occurrences, I have renamed the lock field in struct ast_channel
so it is clear that it shouldn't be used directly.
There are some uses in res/res_features.c (see details of the diff)
that are error prone as they try and lock two channels without
caring about the order (or without explaining why it is safe).
Joshua Colp [Thu, 15 Nov 2007 15:21:04 +0000 (15:21 +0000)]
And file said... let trunk build again! Accomplished by some more constification, and marking a function in chan_sip as purposely unused until it is fixed up.
Olle Johansson [Thu, 15 Nov 2007 12:21:57 +0000 (12:21 +0000)]
Always relying on the responses when crossing NAT's are not a good
solution, it breaks communication.
Rizzo - you need to implement a configuration option for this
code. It's good, but maybe should be off by default.
Olle Johansson [Thu, 15 Nov 2007 10:21:41 +0000 (10:21 +0000)]
Add support for application/dtmf SIP INFO dtmf handling. Yep, another
way of handling DTMF in SIP. Totally undocumented, but implemented
in enough devices so we have to support it.
Steve Murphy [Thu, 15 Nov 2007 01:42:12 +0000 (01:42 +0000)]
Had trouble playing with parking; spent a long time trying to reason out MATCHMORE mode. made these updates and xfers on zaptel lines seem to work ok now
Steve Murphy [Wed, 14 Nov 2007 18:05:50 +0000 (18:05 +0000)]
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.
Steve Murphy [Wed, 14 Nov 2007 15:43:30 +0000 (15:43 +0000)]
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.
Russell Bryant [Wed, 14 Nov 2007 03:22:09 +0000 (03:22 +0000)]
Fix up various coding guidelines issues ...
- handle memory allocation failures
- add an ast_ prefix to a publicly exported function
- put curly braces in the right places
- add a bunch of spaces where they should be be used
Russell Bryant [Tue, 13 Nov 2007 20:30:13 +0000 (20:30 +0000)]
Update the ParkedCall application to grab the first available parked call if no
parked extension is provided as an argument.
(closes issue #10803)
Reported by: outtolunc
Patches:
res_features-parkedcall-any.diff4 uploaded by outtolunc (license 237)
- modified by me to work a bit differently ...
Revert change from revision 67064.
It is documented behavior that if a parking extension already exists while using PARKINGEXTEN,
dialplan execution will continue. If blind transferring to a Park with PARKINGEXTEN, you
must keep this in mind, and handle the failure yourself.
Debugging is running into the 16-lock limit. Increase to avoid.
(This define is only effective when debugging is turned on, so there's
no effect for most installations.)
Some sanity checking for MixMonitor. If only 1 argument is given, then the args.options
and args.post_process strings are uninitialized and could contain garbage. This change
handles this situation properly by only using arguments that we have parsed.
If two config writes collide, file corruption could result. Use a mkstemp() file, instead.
Reported by: paravoid
Patch by: tilghman
Closes issue #10781
Steve Murphy [Mon, 12 Nov 2007 18:44:36 +0000 (18:44 +0000)]
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.
Merged revisions 89173 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r89173 | crichter | 2007-11-12 12:26:48 +0100 (Mo, 12 Nov 2007) | 1 line
if we're NT and no number was dialed and overlapdial is set, we wait for the ISDN timeout instead of starting our own timer. added a comment for the misdn.conf.sample for the overlapdial config option.
........
Merged revisions 89172 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r89172 | crichter | 2007-11-12 12:23:57 +0100 (Mo, 12 Nov 2007) | 1 line
added restart all interfaces Restart_Indicator, to automatically send a RESTART after the L2 of a PTP Port comes up. Also fixed some places where we have send a RELEASE without need for it.
........
Joshua Colp [Mon, 12 Nov 2007 13:26:45 +0000 (13:26 +0000)]
Fix building on FreeBSD by including/not including some headers.
(closes issue #11218)
Reported by: ys
Patches:
trunk89169.diff uploaded by ys (license 281)
Merged revisions 89171 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r89171 | crichter | 2007-11-12 12:13:13 +0100 (Mo, 12 Nov 2007) | 1 line
fixed a state/event issue with overlapdial=yes when no extension matched. removed the general sending of a RELEASE_COMPLETE when we receive a RELEASE, this is done by mISDNuser/mISDN. This makes it possible to use asterisk-1.4 with mISDN trunk, but requires users of mISDN/mISDNuser-1.1.X to upgrade to at least mISDNuser-1.1.6 (when using the NT mode at all)
........
Merged revisions 89169 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r89169 | crichter | 2007-11-12 10:45:36 +0100 (Mo, 12 Nov 2007) | 1 line
aded ntkeepcalls option, to avoid droĆpping calls when the L2 goes down on a PTP link. There are some pbx which do turn off the L1 for a very short while and restart it immediately. normally T310 should be started and after 10 seconds or so the calls should be dropped, this is a simple fix wihtout this timer.
........
Steve Murphy [Fri, 9 Nov 2007 16:00:22 +0000 (16:00 +0000)]
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.