[asterisk-commits] oej: branch oej/meetmefixes-1.4 r148424 - /team/oej/meetmefixes-1.4/apps/

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Sat Oct 11 14:03:35 CDT 2008


Author: oej
Date: Sat Oct 11 14:03:34 2008
New Revision: 148424

URL: http://svn.digium.com/view/asterisk?view=rev&rev=148424
Log:
Untested patches

Modified:
    team/oej/meetmefixes-1.4/apps/app_meetme.c

Modified: team/oej/meetmefixes-1.4/apps/app_meetme.c
URL: http://svn.digium.com/view/asterisk/team/oej/meetmefixes-1.4/apps/app_meetme.c?view=diff&rev=148424&r1=148423&r2=148424
==============================================================================
--- team/oej/meetmefixes-1.4/apps/app_meetme.c (original)
+++ team/oej/meetmefixes-1.4/apps/app_meetme.c Sat Oct 11 14:03:34 2008
@@ -313,14 +313,14 @@
 "   FAILURE | SUCCESS | UNANSWERED | RINGTIMEOUT\n" 
 "";
 
-#define MAX_CONFNUM 80
-#define MAX_PIN     80
+#define MAX_CONFNUM 80				/*!< Maximum length of conference name */
+#define MAX_PIN     80				/*!< Maximum length of pin code */
 
 /*! \brief The MeetMe Conference object */
 struct ast_conference {
 	ast_mutex_t playlock;                   /*!< Conference specific lock (players) */
 	ast_mutex_t listenlock;                 /*!< Conference specific lock (listeners) */
-	char confno[MAX_CONFNUM];               /*!< Conference */
+	char confno[MAX_CONFNUM];               /*!< Conference name */
 	struct ast_channel *chan;               /*!< Announcements channel */
 	struct ast_channel *lchan;              /*!< Listen/Record channel */
 	int fd;                                 /*!< Announcements fd */
@@ -348,6 +348,7 @@
 
 static AST_LIST_HEAD_STATIC(confs, ast_conference);
 
+/* List of conferences that are active on this server */
 static unsigned int conf_map[1024] = {0, };
 
 struct volume {
@@ -1363,6 +1364,8 @@
 		if ((sscanf(conf->confno, "%d", &confno_int) == 1) && (confno_int >= 0 && confno_int < 1024))
 			conf_map[confno_int] = 0;
 		conf_free(conf);
+		/* Make sure we reset the number of members and the systemname */
+		ast_update_realtime("meetme", "confno", conf->confno, "members", "0", "systemname", NULL, NULL);
 		res = 1;
 	}
 	AST_LIST_UNLOCK(&confs);
@@ -2335,6 +2338,7 @@
 {
 	struct ast_variable *var;
 	struct ast_conference *cnf;
+	char *systemname = NULL;
 
 	/* Check first in the conference list */
 	AST_LIST_LOCK(&confs);
@@ -2360,12 +2364,21 @@
 				pin = ast_strdupa(var->value);
 			} else if (!strcasecmp(var->name, "adminpin")) {
 				pinadmin = ast_strdupa(var->value);
+			} else if (!strcasecmp(var->name, "systemname")) {
+				systemname = ast_strdupa(var->value);
 			}
 			var = var->next;
 		}
 		ast_variables_destroy(var);
-		
-		cnf = build_conf(confno, pin ? pin : "", pinadmin ? pinadmin : "", make, dynamic, refcount);
+
+		/* Check if this conference is running on a different system 
+		   If it is, don't build the conference here. Return the system name in MEETME_SYSTEMNAME
+		*/
+		if (!ast_strlen_zero(systemname) && !ast_strcmp(ast_config_AST_SYSTEM_NAME, systemname)) {
+			pbx_builtin_setvar_helper(chan, "MEETME_SYSTEMNAME", systemname);
+		} else {
+			cnf = build_conf(confno, pin ? pin : "", pinadmin ? pinadmin : "", make, dynamic, refcount);
+		}
 	}
 
 	if (cnf) {




More information about the asterisk-commits mailing list