Try a test compile to see if PTHREAD_ONCE_INIT requires extra braces.
There was conditional code (based on build platform) to optioinally wrap
PTHREAD_ONCE_INIT in braces that was removed since it is fixed in newer versions
of Solaris/OpenSolaris, but I am still running into it on Solaris 10 x86 so add
a configure-time check for it.
........
Avoid a crash with large numbers of MeetMe conferences.
Similar to changes made to Queue(), when we have large numbers of conferences in
meetme.conf (1000s) and we use alloca()/strdupa(), we can blow out the stack and
crash, so instead just use a single fixed buffer.
David Vossel [Wed, 23 Dec 2009 19:14:05 +0000 (19:14 +0000)]
QUEUE_MEMBER(..., ready) counts only ready agents, not free agents wrapping up
The QUEUE_MEMBER dialplan function can return total members,
logged-in members and "free" members count. A member is counted
as "free" immediately after his call ends, even though its wrap-up
time, if specified in queues.conf, has not yet expired, and the
queue will not actually route a call to it.
This Patch introduces a new "ready" option that only counts
free agents no longer in the wrap up time period.
David Vossel [Wed, 23 Dec 2009 18:39:37 +0000 (18:39 +0000)]
new parameter 'R' to the Queue application
The 'R' argument stops moh and indicates ringing once the agent is
ringing. This allows the person in the queue to know their call
is potentially about to be answered.
Tilghman Lesher [Wed, 23 Dec 2009 18:25:27 +0000 (18:25 +0000)]
AGI may be invoked from outside the dialplan
(closes issue #16510)
Reported by: atis
Patches:
20091223__issue16510.diff.txt uploaded by tilghman (license 14)
Tested by: atis
It is possible for a second ACK to come in for a retransmitted message.
If an ack does not match an unacked message in our queue, restore the previous
p->method as this ACK is completely ignored.
David Vossel [Tue, 22 Dec 2009 16:09:11 +0000 (16:09 +0000)]
Unit Test Framework API
The Unit Test Framework is a new API that manages registration and
execution of unit tests in Asterisk with the purpose of verifying the
operation of C functions. The Framework consists of a single test
manager accompanied by a list of registered test functions defined
within the code. A test is defined, registered, and unregistered
from the framework using a set of macros which allow the test code
to only be compiled within asterisk when the TEST_FRAMEWORK flag is
enabled in menuselect. This allows the test code to exist in the
same file as the C functions it intends to verify. Registered tests
may be viewed and executed via a set of new CLI commands. CLI commands
are also present for generating and exporting test results into xml
and txt formats.
For more information and use cases please refer to the documentation
provided at the beginning of the test.h file.
Change Monitor to not assume file to write to does not contain pathing.
227944 changed the fname_base argument to always append the configured monitor
path. This change was necessary to properly compare files for uniqueness.
If a full path is given though, nothing needs to be appended and that is
handled correctly now.
Send parking lot announcement to the channel which parked the call, not the park-ee.
(closes issue #16234)
Reported by: yeshuawatso
Patches:
20091210__issue16234.diff.txt uploaded by tilghman (license 14)
20091221__issue16234__1.4.diff.txt uploaded by tilghman (license 14)
Tested by: yeshuawatso
........
This patch is simple in that it reorders the disposition defines so that the fix
for issue 12946 works properly (the default CDR disposition was changed to
AST_CDR_NOANSWER). Also, the AST_CDR_FLAG_ORIGINATED flag was set in ast_call to
ensure all CDR records are written.
The side effects of CDR changes are scary, so I'm documenting the test cases
performed to attempt to catch any regressions. The following tests were all
performed using 1.4 rev 195881 vs head (235571) + patch:
A calls B
C calls B (busy)
Hangup C
Hangup A
(Both SIP and features)
A calls B
A blind transfers to C
Hangup C
(Both SIP and features)
A calls B
A attended transfers to C
Hangup C
A calls B
A attended transfers to C (SIP)
C blind transfers to A (features)
Hangup A
All of the test scenario CDRs matched.
The following tests were performed just with the patch to ensure proper operation
(with unanswered=yes):
Joshua Colp [Thu, 17 Dec 2009 23:21:07 +0000 (23:21 +0000)]
Remove some old code for going to the 'fax' extension when a T.38 switchover occurs. This would have
already happened when we detected the CNG tone so this was basically a noop.
Use context from which Macro is executed, not macro context, if applicable.
Also, ensure that the extension COULD match, not just that it won't match more.
(closes issue #16113)
Reported by: OrNix
Patches:
20091216__issue16113.diff.txt uploaded by tilghman (license 14)
Tested by: OrNix
........
Jeff Peeler [Wed, 16 Dec 2009 00:31:53 +0000 (00:31 +0000)]
Enhance AMI redirect to allow channels to be redirected to different places.
New parameters ExtraContext, ExtraExtension, and ExtraPriority have been added
to redirect the second channel to a different location. Previously, it was only
possible to redirect both channels to the same place.
David Vossel [Tue, 15 Dec 2009 18:43:06 +0000 (18:43 +0000)]
reverse minor sip registration regression
A registration regression caused by a code tweak in (issue #14331)
and a bug fix in (issue #15539) caused some sip registration
config entries to be constructed incorrectly. Origially
issue #14331 contained the code tweak as well as a bug fix, but since
the issue was reported as a tweak the bug fix portion was moved into
issue #15539. Both the tweak and the bug fix contained minor incorrect
logic that resulted in some SIP registrations to fail.
Kevin P. Fleming [Tue, 15 Dec 2009 14:35:46 +0000 (14:35 +0000)]
spandsp does in fact support V.17 modulation at 14.4 kilobits per second,
so we should generate T38MaxBitRate of 14400 (even though that doesn't really
affect the FAX transmission much at all)
Deal with the situation where .flavor exists but .version does not.
Also make the script slightly more portable, in keeping with autoconf syntax.
(closes issue #14737)
Reported by: davidw
........
There where still cases where the 183 keep-alive mechanism would not stop
sending 183's even though the Asterisk server had sent a final reply to
the invite.
Fix talking detection status after conference user is muted.
This patch ensures that when a conference user is muted that the accompanying
AMI Meetme talking off event is sent. Also, the meetme list output is updated
to show the muted user as unmonitored.
Jeff Peeler [Thu, 10 Dec 2009 17:31:23 +0000 (17:31 +0000)]
Add audio announcement option to app_page
As described in the CHANGES file:
* MeetMe has a new option 'G' to play an announcement before joining a
conference.
* Page has a new option 'A(x)' which will playback an announcement
simultaneously to all paged phones (and optionally excluding the caller's one
using the new option 'n') before the call is bridged.
To add the new option to meetme, the conference flag options had to be extended
to 64 bits.
(closes issue #14365)
Reported by: dferrer
Patches:
page_announce.patch uploaded by dferrer (license 525)
modified by me
Russell Bryant [Wed, 9 Dec 2009 15:15:02 +0000 (15:15 +0000)]
Blocked revisions 233782 via svnmerge
........
r233782 | russell | 2009-12-09 09:14:21 -0600 (Wed, 09 Dec 2009) | 22 lines
Set a module load priority for format modules.
A recent change to app_voicemail made it such that the module now assumes that
all format modules are available while processing voicemail configuration.
However, when autoloading modules, it was possible that app_voicemail was
loaded before the format modules. Since format modules don't depend on
anything, set a module load priority on them to ensure that they get loaded
first when autoloading.
This version of the patch is specific to Asterisk 1.4 and 1.6.0. These versions
did not already support module load priority in the module API. This adds a
trivial version of this which is just a module flag to include it in a pass before
loading "everything".
Thanks to mmichelson for the review!
(closes issue #16412)
Reported by: jiddings
Tested by: russell
Russell Bryant [Tue, 8 Dec 2009 18:00:16 +0000 (18:00 +0000)]
Set a module load priority for format modules.
A recent change to app_voicemail made it such that the module now assumes that
all format modules are available while processing voicemail configuration.
However, when autoloading modules, it was possible that app_voicemail was
loaded before the format modules. Since format modules don't depend on
anything, set a module load priority on them to ensure that they get loaded
first when autoloading.
This fix applies to trunk, 1.6.1, and 1.6.2. The fix for 1.4 and 1.6.0 will
require a different approach since the module load priority functionality is
not present in the module API.
David Ruggles [Mon, 7 Dec 2009 19:48:14 +0000 (19:48 +0000)]
Fix TCP Client interface
Fix a couple of very minor bugs that prevent the socket client from working. The wrong set of properties were used in one place and the size of the address variable isn't set if the host name is an ip address. Also includes a fix for a bug that was introduced previously.
Russell Bryant [Fri, 4 Dec 2009 17:18:22 +0000 (17:18 +0000)]
Merged revisions 233092 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r233092 | russell | 2009-12-04 11:12:47 -0600 (Fri, 04 Dec 2009) | 7 lines
Only do frame payload check for HOLD frames.
This code was added for helping to debug the source of invalid HOLD frames.
However, a side effect of this is that it will incorrectly report errors for
frames that have an integer payload. Make the check for this block specific
to the HOLD frame case.
........
Tilghman Lesher [Fri, 4 Dec 2009 16:08:58 +0000 (16:08 +0000)]
Update the mysql driver to always return NULL columns, as this is needed for the realtime API to work correctly.
(closes issue #16138)
Reported by: sohosys
Patches:
20091029__issue16138.diff.txt uploaded by tilghman (license 14)
Tested by: sohosys
Added additional field 'int display_inband_dtmf_warning', which when set to '1' displays the warning ('Inband DTMF is not supported on codec %s. Use RFC2833'), and when set to '0' doesn't display the warning. Otherwise you would get hundreds of warnings every second.
Tilghman Lesher [Thu, 3 Dec 2009 22:13:56 +0000 (22:13 +0000)]
Add pagerdateformat, to allow shorter dates for SMS messages.
(closes issue #16263)
Reported by: andrew
Patches:
pagerdate.patch uploaded by andrew (license 240)
(with a slight modification by me)
Deprecate "cz" in favor of "cs".
Also, change the use of language codes so that language registers as a prefix,
rather than an exact match.
(closes issue #16272)
Reported by: patrol-cz
Patches:
20091203__issue16272.diff.txt uploaded by tilghman (license 14)
........
Tilghman Lesher [Thu, 3 Dec 2009 00:08:55 +0000 (00:08 +0000)]
Fix multiple issues with musiconhold, which led to classes not getting destroyed properly.
* Classes are now tracked past removal from the core container, and module
removal is actively prevented until all references are freed.
* A hanging reference stored in the channel has been removed. This could have
caused a mismatch and the music state not properly cleared, if two or more
reloads occurred between MOH being stopped and MOH being restarted.
* In certain circumstances, duplicate classes were possible.
* A race existed at reload time between a process being killed and the thread
responsible for reading from the related pipe respawning that process.
* Several reference counts have also been corrected. At least one could have
caused deleted classes to stick around forever, consuming resources. This
originally manifested as MOH external processes that were not killed at
reload time.
(closes issue #16279, closes issue #16207)
Reported by: parisioa, dcabot
Patches:
20091202__issue16279__2.diff.txt uploaded by tilghman (license 14)
Tested by: parisioa, tilghman
David Ruggles [Wed, 2 Dec 2009 22:17:22 +0000 (22:17 +0000)]
Prevent double closing of FDs by EIVR
This caused a problem when asterisk was under heavy load and running both AGI and EIVR applications.
EIVR would close an FD at which point it would be considered freed and be used by a new AGI instance
the second close would then close the FD now in use by AGI.