]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
automerge commit
authorAutomerge script <automerge@asterisk.org>
Thu, 6 Apr 2006 23:05:57 +0000 (23:05 +0000)
committerAutomerge script <automerge@asterisk.org>
Thu, 6 Apr 2006 23:05:57 +0000 (23:05 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@18125 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_meetme.c

index 9bfbc88927dcca654e43b4dccd23799809cde927..4b90e91d4a4798be140b2c4471a3594017f386a4 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Asterisk -- An open source telephony toolkit.
  *
- * Copyright (C) 1999 - 2005, Digium, Inc.
+ * Copyright (C) 1999 - 2006, Digium, Inc.
  *
  * Mark Spencer <markster@digium.com>
  *
@@ -70,8 +70,9 @@ static const char *descrip =
 "If the conference number is omitted, the user will be prompted to enter\n"
 "one. \n"
 "User can exit the conference by hangup, or if the 'p' option 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"
@@ -1620,7 +1621,8 @@ static int conf_run(struct ast_channel *chan, struct ast_conference *conf, int c
        return ret;
 }
 
-static struct ast_conference *find_conf(struct ast_channel *chan, char *confno, int make, int dynamic, char *dynamic_pin)
+static struct ast_conference *find_conf(struct ast_channel *chan, char *confno, int make, int dynamic, char *dynamic_pin,
+                                       struct ast_flags *confflags)
 {
        struct ast_config *cfg;
        struct ast_variable *var;
@@ -1695,6 +1697,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;
 }
 
@@ -1723,7 +1740,7 @@ static int count_exec(struct ast_channel *chan, void *data)
        }
        
        confnum = strsep(&localdata,"|");       
-       conf = find_conf(chan, confnum, 0, 0, NULL);
+       conf = find_conf(chan, confnum, 0, 0, NULL, NULL);
        if (conf)
                count = conf->users;
        else
@@ -1910,7 +1927,7 @@ 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);
+                       cnf = find_conf(chan, confno, 1, dynamic, the_pin, &confflags);
                        if (!cnf) {
                                res = ast_streamfile(chan, "conf-invalid", chan->language);
                                if (!res)