summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/app_meetme.c34
1 files changed, 21 insertions, 13 deletions
diff --git a/apps/app_meetme.c b/apps/app_meetme.c
index 9198ea654..afecc8ea1 100644
--- a/apps/app_meetme.c
+++ b/apps/app_meetme.c
@@ -2952,10 +2952,11 @@ static void meetme_menu_admin(enum menu_modes *menu_mode, int *dtmf, struct ast_
* \param chan ast_channel belonging to the user who called the menu
* \param user which meetme conference user invoked the menu
* \param recordingtmp character buffer which may hold the name of the conference recording file
- * \param dahdic dahdi configuration info used by the main conference loop
*/
-
-static void meetme_menu_admin_extended(enum menu_modes *menu_mode, int *dtmf, struct ast_conference *conf, struct ast_flags64 *confflags, struct ast_channel *chan, struct ast_conf_user *user, char *recordingtmp, int recordingtmp_size, struct dahdi_confinfo *dahdic, struct ast_format_cap *cap_slin)
+static void meetme_menu_admin_extended(enum menu_modes *menu_mode, int *dtmf,
+ struct ast_conference *conf, struct ast_flags64 *confflags, struct ast_channel *chan,
+ struct ast_conf_user *user, char *recordingtmp, int recordingtmp_size,
+ struct ast_format_cap *cap_slin)
{
int keepplaying;
int playednamerec;
@@ -3088,12 +3089,14 @@ static void meetme_menu_admin_extended(enum menu_modes *menu_mode, int *dtmf, st
ast_mutex_lock(&conf->recordthreadlock);
if ((conf->recordthread == AST_PTHREADT_NULL) && ast_test_flag64(confflags, CONFFLAG_RECORDCONF) && ((conf->lchan = ast_request("DAHDI", cap_slin, NULL, chan, "pseudo", NULL)))) {
+ struct dahdi_confinfo dahdic;
+
ast_set_read_format_by_id(conf->lchan, AST_FORMAT_SLINEAR);
ast_set_write_format_by_id(conf->lchan, AST_FORMAT_SLINEAR);
- dahdic->chan = 0;
- dahdic->confno = conf->dahdiconf;
- dahdic->confmode = DAHDI_CONF_CONFANN | DAHDI_CONF_CONFANNMON;
- if (ioctl(ast_channel_fd(conf->lchan, 0), DAHDI_SETCONF, dahdic)) {
+ dahdic.chan = 0;
+ dahdic.confno = conf->dahdiconf;
+ dahdic.confmode = DAHDI_CONF_CONFANN | DAHDI_CONF_CONFANNMON;
+ if (ioctl(ast_channel_fd(conf->lchan, 0), DAHDI_SETCONF, &dahdic)) {
ast_log(LOG_WARNING, "Error starting listen channel\n");
ast_hangup(conf->lchan);
conf->lchan = NULL;
@@ -3136,10 +3139,11 @@ static void meetme_menu_admin_extended(enum menu_modes *menu_mode, int *dtmf, st
* \param chan ast_channel belonging to the user who called the menu
* \param user which meetme conference user invoked the menu
* \param recordingtmp character buffer which may hold the name of the conference recording file
- * \param dahdic dahdi configuration info used by the main conference loop
*/
-
-static void meetme_menu(enum menu_modes *menu_mode, int *dtmf, struct ast_conference *conf, struct ast_flags64 *confflags, struct ast_channel *chan, struct ast_conf_user *user, char *recordingtmp, int recordingtmp_size, struct dahdi_confinfo *dahdic, struct ast_format_cap *cap_slin)
+static void meetme_menu(enum menu_modes *menu_mode, int *dtmf,
+ struct ast_conference *conf, struct ast_flags64 *confflags, struct ast_channel *chan,
+ struct ast_conf_user *user, char *recordingtmp, int recordingtmp_size,
+ struct ast_format_cap *cap_slin)
{
switch (*menu_mode) {
case MENU_DISABLED:
@@ -3154,7 +3158,8 @@ static void meetme_menu(enum menu_modes *menu_mode, int *dtmf, struct ast_confer
break;
}
case MENU_ADMIN_EXTENDED:
- meetme_menu_admin_extended(menu_mode, dtmf, conf, confflags, chan, user, recordingtmp, recordingtmp_size, dahdic, cap_slin);
+ meetme_menu_admin_extended(menu_mode, dtmf, conf, confflags, chan, user,
+ recordingtmp, recordingtmp_size, cap_slin);
break;
}
}
@@ -3400,9 +3405,9 @@ static int conf_run(struct ast_channel *chan, struct ast_conference *conf, struc
if (rt_schedule && conf->maxusers) {
if (conf->users >= conf->maxusers) {
/* Sorry, but this confernce has reached the participant limit! */
+ ast_mutex_unlock(&conf->playlock);
if (!ast_streamfile(chan, "conf-full", ast_channel_language(chan)))
ast_waitstream(chan, "");
- ast_mutex_unlock(&conf->playlock);
goto outrun;
}
}
@@ -4168,6 +4173,7 @@ static int conf_run(struct ast_channel *chan, struct ast_conference *conf, struc
if (ast_test_flag64(confflags, CONFFLAG_PASS_DTMF)) {
conf_queue_dtmf(conf, user, f);
}
+ /* Take out of conference */
if (ioctl(fd, DAHDI_SETCONF, &dahdic_empty)) {
ast_log(LOG_WARNING, "Error setting conference\n");
close(fd);
@@ -4205,13 +4211,15 @@ static int conf_run(struct ast_channel *chan, struct ast_conference *conf, struc
}
if (dtmf > 0) {
- meetme_menu(&menu_mode, &dtmf, conf, confflags, chan, user, recordingtmp, sizeof(recordingtmp), &dahdic, cap_slin);
+ meetme_menu(&menu_mode, &dtmf, conf, confflags,
+ chan, user, recordingtmp, sizeof(recordingtmp), cap_slin);
}
if (musiconhold && !menu_mode) {
conf_start_moh(chan, optargs[OPT_ARG_MOH_CLASS]);
}
+ /* Put back into conference */
if (ioctl(fd, DAHDI_SETCONF, &dahdic)) {
ast_log(LOG_WARNING, "Error setting conference\n");
close(fd);