[asterisk-commits] russell: branch 1.2 r55005 - in /branches/1.2: apps/ configs/

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Fri Feb 16 15:48:22 MST 2007


Author: russell
Date: Fri Feb 16 16:48:22 2007
New Revision: 55005

URL: http://svn.digium.com/view/asterisk?view=rev&rev=55005
Log:
Revert the change I did in revisions 54955, 54969, and 54970, in 1.2, 1.4, 
and trunk.  I decided that once a conference is created from meetme.conf,
it is acceptable behavior that the pin can not be changed until the
conference goes away.  I also added a note in meetme.conf to describe this
behavior.

We still have another issue in 1.4 and trunk where some conferences with no
users don't go away.  That is the real bug that needs to be addressed here.

Modified:
    branches/1.2/apps/app_meetme.c
    branches/1.2/configs/meetme.conf.sample

Modified: branches/1.2/apps/app_meetme.c
URL: http://svn.digium.com/view/asterisk/branches/1.2/apps/app_meetme.c?view=diff&rev=55005&r1=55004&r2=55005
==============================================================================
--- branches/1.2/apps/app_meetme.c (original)
+++ branches/1.2/apps/app_meetme.c Fri Feb 16 16:48:22 2007
@@ -438,8 +438,7 @@
 		ast_autoservice_stop(chan);
 }
 
-static struct ast_conference *build_conf(const char *confno, const char *pin, 
-	const char *pinadmin, int make, int dynamic)
+static struct ast_conference *build_conf(char *confno, char *pin, char *pinadmin, int make, int dynamic)
 {
 	struct ast_conference *cnf;
 	struct zt_confinfo ztc;
@@ -1646,53 +1645,11 @@
 	return ret;
 }
 
-static struct ast_conference *build_conf_from_config(struct ast_conference *conf, const char *confno, 
-	int make, int dynamic)
+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;
-
-	if (!(cfg = ast_config_load(CONFIG_FILE_NAME))) {
-		ast_log(LOG_WARNING, "No %s file :(\n", CONFIG_FILE_NAME);
-		return NULL;
-	}
-
-	var = ast_variable_browse(cfg, "rooms");
-	for (; var; var = var->next) {
-		/* Separate the PIN */
-		char *pin, *pinadmin, *conf_name;
-		if (strcasecmp(var->name, "conf"))
-			continue;
-
-		pinadmin = ast_strdupa(var->value);
-		conf_name = strsep(&pinadmin, "|,");
-		pin = strsep(&pinadmin, "|,");
-
-		if (strcasecmp(conf_name, confno))
-			continue;
-
-		if (!conf) {
-			conf = build_conf(confno, pin ? pin : "", pinadmin ? pinadmin : "", make, dynamic);
-			break;
-		}
-
-		ast_copy_string(conf->pin, pin ? pin : "", sizeof(conf->pin));
-		ast_copy_string(conf->pinadmin, pinadmin ? pinadmin : "", sizeof(conf->pinadmin));
-
-		break;
-	}
-
-	if (!var && !conf)
-		ast_log(LOG_DEBUG, "%s isn't a valid conference\n", confno);
-
-	ast_config_destroy(cfg);
-
-	return conf;
-}
-
-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_conference *cnf;
 
 	/* Check first in the conference list */
@@ -1718,7 +1675,43 @@
 				cnf = build_conf(confno, "", "", make, dynamic);
 			}
 		} else {
-			cnf = build_conf_from_config(NULL, confno, make, dynamic);
+			/* Check the config */
+			cfg = ast_config_load(CONFIG_FILE_NAME);
+			if (!cfg) {
+				ast_log(LOG_WARNING, "No %s file :(\n", CONFIG_FILE_NAME);
+				return NULL;
+			}
+			var = ast_variable_browse(cfg, "rooms");
+			while (var) {
+				if (!strcasecmp(var->name, "conf")) {
+					/* Separate the PIN */
+					char *pin, *pinadmin, *conf;
+
+					if ((pinadmin = ast_strdupa(var->value))) {
+						conf = strsep(&pinadmin, "|,");
+						pin = strsep(&pinadmin, "|,");
+						if (!strcasecmp(conf, confno)) {
+							/* Bingo it's a valid conference */
+							if (pin)
+								if (pinadmin)
+									cnf = build_conf(confno, pin, pinadmin, make, dynamic);
+								else
+									cnf = build_conf(confno, pin, "", make, dynamic);
+							else
+								if (pinadmin)
+									cnf = build_conf(confno, "", pinadmin, make, dynamic);
+								else
+									cnf = build_conf(confno, "", "", make, dynamic);
+							break;
+						}
+					}
+				}
+				var = var->next;
+			}
+			if (!var) {
+				ast_log(LOG_DEBUG, "%s isn't a valid conference\n", confno);
+			}
+			ast_config_destroy(cfg);
 		}
 	} else if (dynamic_pin) {
 		/* Correct for the user selecting 'D' instead of 'd' to have
@@ -1726,10 +1719,6 @@
 		   with a pin. */
 		if (dynamic_pin[0] == 'q')
 			dynamic_pin[0] = '\0';
-	} else if (!cnf->isdynamic) {
-		/* If the conference exists, check the config again, just in case
-		 * the pin in the file has changed. */
-		build_conf_from_config(cnf, confno, 0, 0);
 	}
 
 	if (cnf) {

Modified: branches/1.2/configs/meetme.conf.sample
URL: http://svn.digium.com/view/asterisk/branches/1.2/configs/meetme.conf.sample?view=diff&rev=55005&r1=55004&r2=55005
==============================================================================
--- branches/1.2/configs/meetme.conf.sample (original)
+++ branches/1.2/configs/meetme.conf.sample Fri Feb 16 16:48:22 2007
@@ -17,5 +17,10 @@
 ;
 ; Usage is conf => confno[,pin][,adminpin]	
 ;
+; Note that once a participant has called the conference, a change to the pin
+; number done in this file will not take effect until there are no more users
+; in the conference and it goes away.  When it is created again, it will have
+; the new pin number.
+;
 ;conf => 1234 
 ;conf => 2345,9938



More information about the asterisk-commits mailing list