diff options
author | Kevin P. Fleming <kpfleming@digium.com> | 2006-04-06 22:16:23 +0000 |
---|---|---|
committer | Kevin P. Fleming <kpfleming@digium.com> | 2006-04-06 22:16:23 +0000 |
commit | 65e9dce01f5423f55027ccc05a23dca968140297 (patch) | |
tree | 5197061f268f6b0df38345a2f51e570e81ca2865 /apps | |
parent | 4ded41daa5fffbbfa985c66d9705da53307e514e (diff) |
Merged revisions 18087 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2
........
r18087 | kpfleming | 2006-04-06 17:04:58 -0500 (Thu, 06 Apr 2006) | 3 lines
don't try to support 'i' or 'r' options if chan_zap is not loaded, and warn the user when they attempt to use them (issue #6675)
update application help text to more clearly define when Zaptel and chan_zap are required
........
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@18090 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'apps')
-rw-r--r-- | apps/app_meetme.c | 58 |
1 files changed, 44 insertions, 14 deletions
diff --git a/apps/app_meetme.c b/apps/app_meetme.c index 2229c57da..eadfb6c4b 100644 --- a/apps/app_meetme.c +++ b/apps/app_meetme.c @@ -2,7 +2,7 @@ /* * Asterisk -- An open source telephony toolkit. * - * Copyright (C) 1999 - 2005, Digium, Inc. + * Copyright (C) 1999 - 2006, Digium, Inc. * * Mark Spencer <markster@digium.com> * @@ -75,8 +75,9 @@ static const char *descrip = "conference. If the conference number is omitted, the user will be prompted\n" "to enter one. User can exit the conference by hangup, or if the 'p' option\n" "is specified, by pressing '#'.\n" -"Please note: A ZAPTEL INTERFACE MUST BE INSTALLED FOR CONFERENCING TO WORK!\n\n" - +"Please note: The Zaptel kernel modules and at least one hardware driver (or ztdummy)\n" +" must be present for conferencing to operate properly. In addition, the chan_zap\n" +" channel driver must be loaded for the 'i' and 'r' options to operate at all.\n\n" "The option string may contain zero or more of the following characters:\n" " 'a' -- set admin mode\n" " 'A' -- set marked mode\n" @@ -1733,12 +1734,9 @@ bailoutandtrynormal: return ret; } -/* - This function looks for a conference via the RealTime module -*/ -static struct ast_conference *find_conf_realtime(struct ast_channel *chan, char *confno, int make, int dynamic, char *dynamic_pin, int refcount) +static struct ast_conference *find_conf_realtime(struct ast_channel *chan, char *confno, int make, int dynamic, + char *dynamic_pin, int refcount, struct ast_flags *confflags) { - struct ast_variable *var; struct ast_conference *cnf; @@ -1778,11 +1776,27 @@ static struct ast_conference *find_conf_realtime(struct ast_channel *chan, char cnf = build_conf(confno, pin ? pin : "", pinadmin ? pinadmin : "", make, dynamic, refcount); } + if (cnf) { + if (confflags && !cnf->chan && + !ast_test_flag(confflags, CONFFLAG_QUIET) && + ast_test_flag(confflags, CONFFLAG_INTROUSER)) { + ast_log(LOG_WARNING, "No Zap channel available for conference, user introduction disabled (is chan_zap loaded?)\n"); + ast_clear_flag(confflags, CONFFLAG_INTROUSER); + } + + if (confflags && !cnf->chan && + ast_test_flag(confflags, CONFFLAG_RECORDCONF)) { + ast_log(LOG_WARNING, "No Zap channel available for conference, conference recording disabled (is chan_zap loaded?)\n"); + ast_clear_flag(confflags, CONFFLAG_RECORDCONF); + } + } + return cnf; } -static struct ast_conference *find_conf(struct ast_channel *chan, char *confno, int make, int dynamic, char *dynamic_pin, int refcount) +static struct ast_conference *find_conf(struct ast_channel *chan, char *confno, int make, int dynamic, + char *dynamic_pin, int refcount, struct ast_flags *confflags) { struct ast_config *cfg; struct ast_variable *var; @@ -1856,6 +1870,21 @@ static struct ast_conference *find_conf(struct ast_channel *chan, char *confno, dynamic_pin[0] = '\0'; } + if (cnf) { + if (confflags && !cnf->chan && + !ast_test_flag(confflags, CONFFLAG_QUIET) && + ast_test_flag(confflags, CONFFLAG_INTROUSER)) { + ast_log(LOG_WARNING, "No Zap channel available for conference, user introduction disabled (is chan_zap loaded?)\n"); + ast_clear_flag(confflags, CONFFLAG_INTROUSER); + } + + if (confflags && !cnf->chan && + ast_test_flag(confflags, CONFFLAG_RECORDCONF)) { + ast_log(LOG_WARNING, "No Zap channel available for conference, conference recording disabled (is chan_zap loaded?)\n"); + ast_clear_flag(confflags, CONFFLAG_RECORDCONF); + } + } + return cnf; } @@ -1887,7 +1916,8 @@ static int count_exec(struct ast_channel *chan, void *data) AST_STANDARD_APP_ARGS(args, localdata); - conf = find_conf(chan, args.confno, 0, 0, NULL, 0); + conf = find_conf(chan, args.confno, 0, 0, NULL, 0, NULL); + if (conf) count = conf->users; else @@ -2073,10 +2103,10 @@ static int conf_exec(struct ast_channel *chan, void *data) } if (!ast_strlen_zero(confno)) { /* Check the validity of the conference */ - cnf = find_conf(chan, confno, 1, dynamic, the_pin, 1); - if (!cnf) { - cnf = find_conf_realtime(chan, confno, 1, dynamic, the_pin, 1); - } + cnf = find_conf(chan, confno, 1, dynamic, the_pin, 1, &confflags); + if (!cnf) + cnf = find_conf_realtime(chan, confno, 1, dynamic, the_pin, 1, &confflags); + if (!cnf) { res = ast_streamfile(chan, "conf-invalid", chan->language); if (!res) |