If channel allocation fails because the alert pipe could not be created also free the scheduler context.
(closes issue #11355)
Reported by: eliel
Patches:
main.channel.c.patch uploaded by eliel (license 64)
Joshua Colp [Mon, 26 Nov 2007 15:28:13 +0000 (15:28 +0000)]
Make the behavior of using /dev/urandom for random numbers the same as random().
(closes issue #11348)
Reported by: sperreault
Patches:
ast_random2.diff uploaded by sperreault (license 252)
We previously attempted to use the ESCAPE clause to set the escape delimiter to
a backslash. Unfortunately, this does not universally work on all databases,
since on databases which natively use the backslash as a delimiter, the
backslash itself needs to be delimited, but on other databases that have no
delimiter, backslashing the backslash causes an error.
So the only solution that I can come up with is to create an option in res_odbc
that explicitly specifies whether or not backslash is a native delimiter. If
it is, we use it natively; if not, we use the ESCAPE clause to make it one.
Olle Johansson [Sun, 25 Nov 2007 11:46:17 +0000 (11:46 +0000)]
- Deprecate "call-limit" in chan_sip. No other channel driver enforces call-limits
and we now have the groupcount system to implement call-limits in the dialplan. You
can use the "setvar" option in realtime/sip.conf to set limits per device.
- Implement "callcounter" as a new option to enable the call counting we need to
report device status to queue, manager and SIP subscriptions.
The call counter setting is now enabled in the code by setting the device call-limit
to 999. When we remove the call limit, we can simply enable this with a boolean
setting.
Steve Murphy [Sat, 24 Nov 2007 21:00:26 +0000 (21:00 +0000)]
closes issue #11363; where the pattern _20x. buried in an included context, didn't match 2012; There were a small set of problems to fix: 1. I needed NOT to score patterns unless you are at the end of the data string. 2. Capital N,X,Z and small n,x,z are OK in patterns. I canonicalize the patterns in the trie to caps. 3. When a pattern ends with dot or exclamation, CANMATCH/MATCHMORE should always report this pattern, no matter the length. With this commit, I also supplied the wish of Luigi, where the user can select which pattern matching algorithm to use, the old (legacy) pattern matcher, or the new, trie based matcher. The OLD matcher is the default. A new [general] section variable, extenpatternmatchnew, is added to the extensions.conf, and the example config has it set to false. If true, the new matcher is used. In all other respects, the context/exten structs are the same; the tries and hashtabs are formed, but in the new mode the tries are not used. A new CLI command 'dialplan set extenpatternmatch true/false' is provided to allow switching at run time. I beg users that are forced to return to the old matcher to please report the reason in the bug tracker. Measured the speed benefit of the new matcher against an impossibly large context with 10,000 extensions: the new matcher is 374 times faster.
Luigi Rizzo [Sat, 24 Nov 2007 13:57:46 +0000 (13:57 +0000)]
remove a DEBUG_THREADS message that accesses private lock fields.
If needed, the code to extract this information should be implemented
in some generic header or library and the function called here.
Currently, zero-length voicemail messages cause a hangup in VoicemailMain.
This change fixes the problem, with a multi-faceted approach. First, we
do our best to avoid these messages from being created in the first place,
and second, if that fails, we detect when the voicemail message is
zero-length and avoid exiting at that point.
Reported by: dtyoo
Patch by: gkloepfer,tilghman
(Closes issue #11083)
Up until this point, the XML output of the manager has been technically
invalid, due to the repetition of certain parameters in a single event.
This caused various issues for XML parsers, some of which refused to parse
at all, given the invalidity of the rendered XML. So this commit fixes
the XML output, ensuring that each entity parameter has a unique name, thus
ensuring valid XML.
Reported by: msetim
Patch by: tilghman
(Closes issue #10220)
Luigi Rizzo [Fri, 23 Nov 2007 15:54:13 +0000 (15:54 +0000)]
put in the necessary hooks for video support in the console.
This is a NOP as far as the current code is concerned,
but there is already support in ./configure and the
Makefiles for the various libraries used by console_video.c
(not yet in the tree) so addition is trivial.
Olle Johansson [Fri, 23 Nov 2007 09:40:02 +0000 (09:40 +0000)]
Let's start with implementing the base architecture for UTF8 caller ID's
so we can handle multiple formats properly. This is not carved in stone,
but a proposal to start with.
We need to add support for transliterations as well as UTF8 handling,
propably with libiconv. Murf is looking into that for the dialplan.
Luigi Rizzo [Thu, 22 Nov 2007 03:50:04 +0000 (03:50 +0000)]
shuffle a little bit the content of header files to reduce dependencies.
In this commit:
- move the ast_register/unregister_app functions to module.h
to avoid the need to include pbx.h for the simpler apps;
- move the ast_group structure to channel.h to remove the
dependency of app.h on linkedlists.h
Note, this is a long process that I am doing in small steps.
The main difficulty is that now for each subsystem we
have a single header (e.g. channel.h) included by the subsystem
provider (usually one file, e.g. channel.c) and by its clients
(dozens of them, e.g. we have some 70+ apps and 30+ functions).
This requires the clients to include all the extra headers
required by the provider (eg. lock.h, linkedlists.h, definitions
of substructures...) even though many of the clients would be
just happy with opaque struct declarations and function prototypes.
The long term plan is to eventually rectify this structure
so that the compilation can become faster, and also APIs
are more stable.
Steve Murphy [Wed, 21 Nov 2007 23:54:12 +0000 (23:54 +0000)]
closes issue #11285, where an unload of a module that creates a dialplan context, causes a crash when you do a 'dialplan show' of that context. This is because the registrar string is defined in the module, and the stale pointer is traversed. The reporter offered a patch that would always strdup the registrar string, which is practical, but I preferred to destroy the created contexts in each module where one is created. That seemed more symmetric. There were only 6 place in asterisk where this is done: chan_sip, chan_iax2, chan_skinny, res_features, app_dial, and app_queue. The two apps destroyed the context, but left the contexts. All is fixed now and unloads should be dialplan friendly.
Steve Murphy [Wed, 21 Nov 2007 20:38:00 +0000 (20:38 +0000)]
closes issue #11290; the proposed patch was a good guess, and would solve the bug to some extent, but was really masking the real issue, that there were bad entries in the table. This fix removes the condition that the hashtab updates be done on exten removal only when the pattern_tree was present, which is silly. The operations that apply to the pattern tree are instead made conditional. Also, threw back in routines that kpfleming deleted because of probs in the 64-bit world. Tested on both 32 and 64-bit machines (compile). Tested the reload problem with over 20 reloads, and no problems. If you find more problems, please reopen 11290.
Changing an inaccurate debug message to be less inaccurate. Under the circumstances, this
message would always report that there were 0 members available, even though that may not be true.
If a channel gets masqueraded in the middle of a park, don't play the
announcement to the masqueraded channel, and dial back to the original
channel on timeout.
Tilghman Lesher [Wed, 21 Nov 2007 18:38:18 +0000 (18:38 +0000)]
Change Read to set READSTATUS as an indication of the result
Also, some cleanup to CHANGES.
Reported by: michael-fig
Patch by: michael-fig,tilghman
(Closes issue #11004)
Mark Michelson [Wed, 21 Nov 2007 18:19:22 +0000 (18:19 +0000)]
There existed about a 1 in 4 billion chance that reading from /dev/urandom
would return LONG_MIN (1 in 9 quintillion if using 64-bit longs). Since there
is no positive equivalent of LONG_MIN, the result of labs() in this case is
unpredictable. This fixes that situation.
(closes issue #11336, reported and patched by sperreault)
Russell Bryant [Wed, 21 Nov 2007 16:24:17 +0000 (16:24 +0000)]
Fix some code that was supposed to ensure that a buffer was terminated, but was
writing to the wrong byte. Also, remove some non-thread safe test code.
(closes issue #11317)
Reported by: IgorG
Patches:
unistim-2.patch uploaded by IgorG (license 20)
- additional changes by me
Mark Michelson [Wed, 21 Nov 2007 16:08:12 +0000 (16:08 +0000)]
I introduced a deadlock avoidance into 1.4, which I attempted to port to trunk as well.
Unfortunately, since trunk uses read/write locks for the context lock, it means that I have
actually *introduced* a deadlock condition since they are not recursive. Removing this change
for now and will look into introducing a different one.
Kevin P. Fleming [Wed, 21 Nov 2007 16:07:11 +0000 (16:07 +0000)]
move these forward declarations back to asterisk.h where they belong... even though asterisk.h includes compat.h, these declarations have nothing to do with the being platform-compatible and are directly related to being part of Asterisk
Steve Murphy [Wed, 21 Nov 2007 01:09:47 +0000 (01:09 +0000)]
A free in add_pri was ultimately the source of the grief we were having with parking. This set of changes fixes that problem, and introduces some more error messages, and puts debugs into ifdefs for what could be short-term usage. Txs to Terry W. for his help, guidance, and especially patience.
Russell Bryant [Wed, 21 Nov 2007 00:21:38 +0000 (00:21 +0000)]
Merge changes from team/russell/sla_trunk_moh ...
* Added the ability to specify the music on hold class used to play into the
conference when there is only one member and the M option is used.
* Added the ability to specify a music on hold class to play instead of ringing
for the SLATrunk application.
According to comments in main/pbx.c, it is essential that if we are going to lock
the conlock as well as the hints lock, it must be locked in that respective order.
In order to prevent a potential deadlock, we need to lock the conlock prior to
locking the hints lock in ast_hint_state_changed (see the call stack example on
issue #11323 for how this can happen).
(closes issue #11323, reported by eelcob, suggestion for patch by eelcob, patch by me)
Luigi Rizzo [Tue, 20 Nov 2007 16:12:10 +0000 (16:12 +0000)]
Fix building of modules under cygwin.
After this commit we can actually load modules under windows,
and we can start debugging more interesting problems related
to the load order and functionality of modules.
Joshua Colp [Tue, 20 Nov 2007 15:00:41 +0000 (15:00 +0000)]
Minor documentation tweak and if an incorrect parameter is given to core show translation return the usage information.
(closes issue #11316)
Reported by: eliel
Patches:
translate.c.patch uploaded by eliel (license 64)
Mark Michelson [Mon, 19 Nov 2007 23:24:35 +0000 (23:24 +0000)]
Changed the "busy-level" option in sip.conf to "busylevel" to be more parallel
with the SIPPEER() argument of the same name. The deprecation procedure is not
being used here since this is a trunk-only option.
(closes issue #11307, reported by pj, patched by me)
Steve Murphy [Mon, 19 Nov 2007 22:55:38 +0000 (22:55 +0000)]
These changes were made in response to niklas@tese.se's letter of 11-17-2007, where he had 20 and 201 in two different contexts, included in the same context. In that particular case, we were behaving the same as 1.4, but after experimenting, I quickly found that if 20 and 201 were in the same extension, 1.4 would return 201, and this code returns 20. These changes now enable the current code to replicate the behavior of 1.4 in respect to MATCHMORE in cases like this.