[asterisk-commits] rmudgett: trunk r379809 - in /trunk: ./ apps/ channels/
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Mon Jan 21 18:36:56 CST 2013
Author: rmudgett
Date: Mon Jan 21 18:36:52 2013
New Revision: 379809
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=379809
Log:
confbridge: Minor fixes playing user counts to the conference.
* Generate a warning message if sound files do not exist when trying to
play the user count to the conference. Use the new helper routine
sound_file_exists() for consistency.
* Put the new user into autoservice when playing user counts to the
conference.
* Check the return value of ast_bridge_impart().
........
Merged revisions 379808 from http://svn.asterisk.org/svn/asterisk/branches/11
Modified:
trunk/ (props changed)
trunk/apps/app_confbridge.c
trunk/channels/chan_bridge.c
Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-11-merged' - no diff available.
Modified: trunk/apps/app_confbridge.c
URL: http://svnview.digium.com/svn/asterisk/trunk/apps/app_confbridge.c?view=diff&rev=379809&r1=379808&r2=379809
==============================================================================
--- trunk/apps/app_confbridge.c (original)
+++ trunk/apps/app_confbridge.c Mon Jan 21 18:36:52 2013
@@ -675,6 +675,23 @@
}
/*!
+ * \internal
+ * \brief Complain if the given sound file does not exist.
+ *
+ * \param filename Sound file to check if exists.
+ *
+ * \retval non-zero if the file exists.
+ */
+static int sound_file_exists(const char *filename)
+{
+ if (ast_fileexists(filename, NULL, NULL)) {
+ return -1;
+ }
+ ast_log(LOG_WARNING, "File %s does not exist in any format\n", filename);
+ return 0;
+}
+
+/*!
* \brief Announce number of users in the conference bridge to the caller
*
* \param conference_bridge Conference bridge to peek at
@@ -719,7 +736,7 @@
"")) {
return -1;
}
- } else if (ast_fileexists(there_are, NULL, NULL) && ast_fileexists(other_in_party, NULL, NULL)) {
+ } else if (sound_file_exists(there_are) && sound_file_exists(other_in_party)) {
play_sound_file(conference_bridge, there_are);
play_sound_number(conference_bridge, conference_bridge->activeusers - 1);
play_sound_file(conference_bridge, other_in_party);
@@ -1209,7 +1226,16 @@
if (ast_test_flag(&conference_bridge_user->u_profile, USER_OPT_ANNOUNCEUSERCOUNTALL) &&
(conference_bridge->activeusers > conference_bridge_user->u_profile.announce_user_count_all_after)) {
- if (announce_user_count(conference_bridge, NULL)) {
+ int user_count_res;
+
+ /*
+ * We have to autoservice the new user because he has not quite
+ * joined the conference yet.
+ */
+ ast_autoservice_start(conference_bridge_user->chan);
+ user_count_res = announce_user_count(conference_bridge, NULL);
+ ast_autoservice_stop(conference_bridge_user->chan);
+ if (user_count_res) {
leave_conference(conference_bridge_user);
return NULL;
}
@@ -1288,8 +1314,7 @@
struct ast_channel *underlying_channel;
/* Do not waste resources trying to play files that do not exist */
- 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>");
+ if (!ast_strlen_zero(filename) && !sound_file_exists(filename)) {
return 0;
}
@@ -1303,7 +1328,10 @@
} else {
/* Channel was already available so we just need to add it back into the bridge */
underlying_channel = ast_channel_tech(conference_bridge->playback_chan)->bridged_channel(conference_bridge->playback_chan, NULL);
- ast_bridge_impart(conference_bridge->bridge, underlying_channel, NULL, NULL, 0);
+ if (ast_bridge_impart(conference_bridge->bridge, underlying_channel, NULL, NULL, 0)) {
+ ast_mutex_unlock(&conference_bridge->playback_lock);
+ return -1;
+ }
}
/* The channel is all under our control, in goes the prompt */
Modified: trunk/channels/chan_bridge.c
URL: http://svnview.digium.com/svn/asterisk/trunk/channels/chan_bridge.c?view=diff&rev=379809&r1=379808&r2=379809
==============================================================================
--- trunk/channels/chan_bridge.c (original)
+++ trunk/channels/chan_bridge.c Mon Jan 21 18:36:52 2013
@@ -126,9 +126,8 @@
}
/* Impart the output channel upon the given bridge of the input channel */
- ast_bridge_impart(ast_channel_internal_bridge(p->input), p->output, NULL, NULL, 0);
-
- return 0;
+ return ast_bridge_impart(ast_channel_internal_bridge(p->input), p->output, NULL, NULL, 0)
+ ? -1 : 0;
}
/*! \brief Called when a channel should be hung up */
More information about the asterisk-commits
mailing list