dect
/
asterisk
Archived
13
0
Fork 0

Merge tilghman's meetme fix for reentering pin (bug #2143)

git-svn-id: http://svn.digium.com/svn/asterisk/trunk@3520 f38db490-d61c-443f-a65b-d21fe96a405b
This commit is contained in:
markster 2004-07-27 03:08:00 +00:00
parent 5b52d9261d
commit 95e8895aed
1 changed files with 35 additions and 24 deletions

View File

@ -1324,33 +1324,44 @@ static int conf_exec(struct ast_channel *chan, void *data)
confno[0] = '\0';
} else {
if (!ast_strlen_zero(cnf->pin)) {
char pin[AST_MAX_EXTENSION];
char pin[AST_MAX_EXTENSION]="";
int j;
if (*the_pin) {
strncpy(pin, the_pin, sizeof(pin) - 1);
res = 0;
} else {
/* Prompt user for pin if pin is required */
res = ast_app_getdata(chan, "conf-getpin", pin, sizeof(pin) - 1, 0);
}
if (res >= 0) {
if (!strcasecmp(pin, cnf->pin)) {
/* Pin correct */
allowretry = 0;
/* Run the conference */
res = conf_run(chan, cnf, confflags);
/* Allow the pin to be retried up to 3 times */
for (j=0; j<3; j++) {
if (*the_pin) {
strncpy(pin, the_pin, sizeof(pin) - 1);
res = 0;
} else {
/* Pin invalid */
res = ast_streamfile(chan, "conf-invalidpin", chan->language);
if (!res)
ast_waitstream(chan, "");
res = -1;
if (allowretry)
confno[0] = '\0';
/* Prompt user for pin if pin is required */
res = ast_app_getdata(chan, "conf-getpin", pin, sizeof(pin) - 1, 0);
}
if (res >= 0) {
if (!strcasecmp(pin, cnf->pin)) {
/* Pin correct */
allowretry = 0;
/* Run the conference */
res = conf_run(chan, cnf, confflags);
break;
} else {
/* Pin invalid */
res = ast_streamfile(chan, "conf-invalidpin", chan->language);
if (!res)
ast_waitstream(chan, "");
res = -1;
if (allowretry)
confno[0] = '\0';
}
} else {
res = -1;
allowretry = 0;
break;
}
/* Don't retry pin with a static pin */
if (*the_pin) {
break;
}
} else {
res = -1;
allowretry = 0;
}
} else {
/* No pin required */