|
|
|
@ -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 additon, 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,19 @@ static struct ast_conference *find_conf(struct ast_channel *chan, char *confno,
|
|
|
|
|
dynamic_pin[0] = '\0';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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 +1738,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 +1925,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)
|
|
|
|
|