[asterisk-commits] mjordan: branch 10 r367562 - /branches/10/apps/app_confbridge.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Thu May 24 08:32:38 CDT 2012
Author: mjordan
Date: Thu May 24 08:32:33 2012
New Revision: 367562
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=367562
Log:
Fix crash in ConfBridge when user announcement is played for more than 2 users
A patch introduced in r354938 made it so that ConfBridge would not attempt to
play sound files if those files did not exist. Unfortunately, ConfBridge uses
the same underlying function, play_sound_helper, to playback both sound files
and numbers to callers. When a number is being played back, the name of the
sound file is expected to be NULL. This NULL value was passed into a function
that tested for the existance of a sound file and is not tolerant to NULL
file names, causing a crash.
This patch fixes the behavior, such that if a sound file does not exist we
do not attempt to play it, but we only attempt that check if the a sound file
was specified in the first place. If a sound file was not specified, we use
the 'play number' logic in the helper function.
(closes issue ASTERISK-19899)
Reported by: Florian Gilcher
Tested by: Florian Gilcher
patches:
asterisk-19899.diff uploaded by mjordan (license 6283)
Modified:
branches/10/apps/app_confbridge.c
Modified: branches/10/apps/app_confbridge.c
URL: http://svnview.digium.com/svn/asterisk/branches/10/apps/app_confbridge.c?view=diff&rev=367562&r1=367561&r2=367562
==============================================================================
--- branches/10/apps/app_confbridge.c (original)
+++ branches/10/apps/app_confbridge.c Thu May 24 08:32:33 2012
@@ -1144,8 +1144,8 @@
struct ast_channel *underlying_channel;
/* Do not waste resources trying to play files that do not exist */
- if (!ast_fileexists(filename, NULL, NULL)) {
- ast_log(LOG_WARNING, "File %s does not exist in any format\n", filename);
+ if (!ast_strlen_zero(filename) && !ast_fileexists(filename, NULL, NULL)) {
+ ast_log(LOG_WARNING, "File %s does not exist in any format\n", !ast_strlen_zero(filename) ? filename : "<unknown>");
return 0;
}
@@ -1165,7 +1165,7 @@
/* The channel is all under our control, in goes the prompt */
if (!ast_strlen_zero(filename)) {
ast_stream_and_wait(conference_bridge->playback_chan, filename, "");
- } else {
+ } else if (say_number >= 0) {
ast_say_number(conference_bridge->playback_chan, say_number, "", conference_bridge->playback_chan->language, NULL);
}
@@ -1188,7 +1188,7 @@
*/
static int play_sound_file(struct conference_bridge *conference_bridge, const char *filename)
{
- return play_sound_helper(conference_bridge, filename, 0);
+ return play_sound_helper(conference_bridge, filename, -1);
}
/*!
More information about the asterisk-commits
mailing list