diff -ur asterisk-1.6.1.1/apps/app_meetme.c asterisk-1.6.1.1-new/apps/app_meetme.c --- asterisk-1.6.1.1/apps/app_meetme.c 2009-03-03 00:39:56.000000000 +0100 +++ asterisk-1.6.1.1-new/apps/app_meetme.c 2009-08-12 22:20:36.171694721 +0200 @@ -3332,23 +3332,24 @@ char pin[MAX_PIN] = ""; int j; - /* Allow the pin to be retried up to 3 times */ + /* Allow the pin to be retried up to 3 times but no conference */ + allowretry = 0; for (j = 0; j < 3; j++) { if (*the_pin && (always_prompt == 0)) { ast_copy_string(pin, the_pin, sizeof(pin)); res = 0; } else { /* Prompt user for pin if pin is required */ - res = ast_app_getdata(chan, "conf-getpin", pin + strlen(pin), sizeof(pin) - 1 - strlen(pin), 0); + res = ast_app_getdata(chan, "conf-getpin", pin, sizeof(pin) - 1, 0); } - if (res >= 0) { + if (res >= 0 && !ast_strlen_zero(pin)) { if (!strcasecmp(pin, cnf->pin) || (!ast_strlen_zero(cnf->pinadmin) && !strcasecmp(pin, cnf->pinadmin))) { /* Pin correct */ - allowretry = 0; if (!ast_strlen_zero(cnf->pinadmin) && !strcasecmp(pin, cnf->pinadmin)) ast_set_flag(&confflags, CONFFLAG_ADMIN); + /* Run the conference */ res = conf_run(chan, cnf, confflags.flags, optargs); break; @@ -3364,17 +3365,9 @@ } if (res < 0) break; - pin[0] = res; - pin[1] = '\0'; - res = -1; - if (allowretry) - confno[0] = '\0'; } - } else { + } else if( res < 0 ) { /* failed when getting the pin */ - res = -1; - allowretry = 0; - /* see if we need to get rid of the conference */ break; } @@ -3390,8 +3383,6 @@ /* Run the conference */ res = conf_run(chan, cnf, confflags.flags, optargs); } - dispose_conf(cnf); - cnf = NULL; } } } while (allowretry); Only in asterisk-1.6.1.1-new/apps: app_meetme.c~