[asterisk-commits] kmoore: branch 1.8 r344439 - /branches/1.8/apps/app_meetme.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Thu Nov 10 15:14:14 CST 2011
Author: kmoore
Date: Thu Nov 10 15:14:11 2011
New Revision: 344439
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=344439
Log:
Fix another incorrect case with meetme's PIN logic and add documentation
This fixes an issue where a user of a dynamic conference was asked for a PIN
twice. This also adds documentation to assist in future modifications to the
piece of code responsible for PIN checking.
(closes issue AST-670)
Modified:
branches/1.8/apps/app_meetme.c
Modified: branches/1.8/apps/app_meetme.c
URL: http://svnview.digium.com/svn/asterisk/branches/1.8/apps/app_meetme.c?view=diff&rev=344439&r1=344438&r2=344439
==============================================================================
--- branches/1.8/apps/app_meetme.c (original)
+++ branches/1.8/apps/app_meetme.c Thu Nov 10 15:14:11 2011
@@ -4342,14 +4342,27 @@
res = -1;
}
} else {
- /* Check to see if the conference requires pin
- * validation and check for exemptions to that
- * requirement. */
- if ((!ast_strlen_zero(cnf->pin) ||
+ /* Conference requires a pin for specified access level */
+ int req_pin = !ast_strlen_zero(cnf->pin) ||
(!ast_strlen_zero(cnf->pinadmin) &&
- ast_test_flag64(&confflags, CONFFLAG_ADMIN))) &&
- (ast_test_flag64(&confflags, CONFFLAG_ALWAYSPROMPT) ||
- ast_strlen_zero(args.pin) || !cnf->isdynamic)) {
+ ast_test_flag64(&confflags, CONFFLAG_ADMIN));
+ /* The following logic was derived from a
+ * 4 variable truth table and defines which
+ * circumstances are not exempt from pin
+ * checking.
+ * If this needs to be modified, write the
+ * truth table back out from the boolean
+ * expression AB+A'D+C', change the erroneous
+ * result, and rederive the expression.
+ * Variables:
+ * A: pin provided?
+ * B: always prompt?
+ * C: dynamic?
+ * D: has users? */
+ int not_exempt = !cnf->isdynamic;
+ not_exempt = not_exempt || (!ast_strlen_zero(args.pin) && ast_test_flag64(&confflags, CONFFLAG_ALWAYSPROMPT));
+ not_exempt = not_exempt || (ast_strlen_zero(args.pin) && cnf->users);
+ if (req_pin && not_exempt) {
char pin[MAX_PIN] = "";
int j;
More information about the asterisk-commits
mailing list