diff options
author | Mark Spencer <markster@digium.com> | 2004-07-27 03:08:00 +0000 |
---|---|---|
committer | Mark Spencer <markster@digium.com> | 2004-07-27 03:08:00 +0000 |
commit | 1394a78bd64f908e934f5bbcf7aa62aa08db0537 (patch) | |
tree | 658857ddce4416da2d1f6171ba46dd48bb76e569 /apps | |
parent | e4d4c93bd8589f039b014b46bffbdde90eb1bfd8 (diff) |
Merge tilghman's meetme fix for reentering pin (bug #2143)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3520 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'apps')
-rwxr-xr-x | apps/app_meetme.c | 59 |
1 files changed, 35 insertions, 24 deletions
diff --git a/apps/app_meetme.c b/apps/app_meetme.c index 983bf5f4e..091a613be 100755 --- a/apps/app_meetme.c +++ b/apps/app_meetme.c @@ -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]; - - 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); + char pin[AST_MAX_EXTENSION]=""; + int j; + + /* 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 { + /* 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 { - /* Pin invalid */ - res = ast_streamfile(chan, "conf-invalidpin", chan->language); - if (!res) - ast_waitstream(chan, ""); res = -1; - if (allowretry) - confno[0] = '\0'; + allowretry = 0; + break; + } + + /* Don't retry pin with a static pin */ + if (*the_pin) { + break; } - } else { - res = -1; - allowretry = 0; } } else { /* No pin required */ |