[asterisk-commits] russell: branch 1.2 r53134 - in /branches/1.2: ./ apps/ include/asterisk/

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Sat Feb 3 13:39:46 MST 2007


Author: russell
Date: Sat Feb  3 14:39:45 2007
New Revision: 53134

URL: http://svn.digium.com/view/asterisk?view=rev&rev=53134
Log:
Revert some changes that accidentally got committed as a part of another fix.

Modified:
    branches/1.2/apps/app_meetme.c
    branches/1.2/include/asterisk/lock.h
    branches/1.2/utils.c

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=53134&r1=53133&r2=53134
==============================================================================
--- branches/1.2/apps/app_meetme.c (original)
+++ branches/1.2/apps/app_meetme.c Sat Feb  3 14:39:45 2007
@@ -139,7 +139,6 @@
 	struct ast_conf_user *firstuser;	/* Pointer to the first user struct */
 	struct ast_conf_user *lastuser;		/* Pointer to the last user struct */
 	time_t start;				/* Start time (s) */
-	int refcount;
 	int recording;				/* recording status */
 	int isdynamic;				/* Created on the fly? */
 	int locked;				/* Is the conference locked? */
@@ -439,7 +438,7 @@
 		ast_autoservice_stop(chan);
 }
 
-static struct ast_conference *build_conf(char *confno, char *pin, char *pinadmin, int make, int dynamic, int refcount)
+static struct ast_conference *build_conf(char *confno, char *pin, char *pinadmin, int make, int dynamic)
 {
 	struct ast_conference *cnf;
 	struct zt_confinfo ztc;
@@ -502,8 +501,6 @@
 			ast_log(LOG_WARNING, "Out of memory\n");
 	}
  cnfout:
- 	if (cnf)
-		ast_atomic_fetchadd_int(&cnf->refcount, refcount);
 	ast_mutex_unlock(&conflock);
 	return cnf;
 }
@@ -838,8 +835,6 @@
 	
 	if (!user) {
 		ast_log(LOG_ERROR, "Out of memory\n");
-		if (ast_atomic_dec_and_test(&conf->refcount))
-			conf_free(conf);
 		return ret;
 	}
 
@@ -1606,10 +1601,9 @@
 			      "Usernum: %d\r\n",
 			      chan->name, chan->uniqueid, conf->confno, user->user_no);
 		conf->users--;
-		ast_atomic_fetchadd_int(&conf->refcount, -1);
 		if (confflags & CONFFLAG_MARKEDUSER) 
 			conf->markedusers--;
-		if (!conf->users && !conf->refcount) {
+		if (!conf->users) {
 			/* No more users -- close this one out */
 			conf_free(conf);
 		} else {
@@ -1652,7 +1646,7 @@
 }
 
 static struct ast_conference *find_conf(struct ast_channel *chan, char *confno, int make, int dynamic, char *dynamic_pin,
-	int refcount, struct ast_flags *confflags)
+					struct ast_flags *confflags)
 {
 	struct ast_config *cfg;
 	struct ast_variable *var;
@@ -1664,8 +1658,6 @@
 		if (!strcmp(confno, cnf->confno)) 
 			break;
 	}
-	if (cnf)
-		ast_atomic_fetchadd_int(&cnf->refcount, refcount);
 	ast_mutex_unlock(&conflock);
 
 	if (!cnf) {
@@ -1678,9 +1670,9 @@
 					if (ast_app_getdata(chan, "conf-getpin", dynamic_pin, AST_MAX_EXTENSION - 1, 0) < 0)
 						return NULL;
 				}
-				cnf = build_conf(confno, dynamic_pin, "", make, dynamic, refcount);
+				cnf = build_conf(confno, dynamic_pin, "", make, dynamic);
 			} else {
-				cnf = build_conf(confno, "", "", make, dynamic, refcount);
+				cnf = build_conf(confno, "", "", make, dynamic);
 			}
 		} else {
 			/* Check the config */
@@ -1702,14 +1694,14 @@
 							/* Bingo it's a valid conference */
 							if (pin)
 								if (pinadmin)
-									cnf = build_conf(confno, pin, pinadmin, make, dynamic, refcount);
+									cnf = build_conf(confno, pin, pinadmin, make, dynamic);
 								else
-									cnf = build_conf(confno, pin, "", make, dynamic, refcount);
+									cnf = build_conf(confno, pin, "", make, dynamic);
 							else
 								if (pinadmin)
-									cnf = build_conf(confno, "", pinadmin, make, dynamic, refcount);
+									cnf = build_conf(confno, "", pinadmin, make, dynamic);
 								else
-									cnf = build_conf(confno, "", "", make, dynamic, refcount);
+									cnf = build_conf(confno, "", "", make, dynamic);
 							break;
 						}
 					}
@@ -1772,11 +1764,10 @@
 	}
 	
 	confnum = strsep(&localdata,"|");       
-	conf = find_conf(chan, confnum, 0, 0, NULL, 1, NULL);
-	if (conf) {
+	conf = find_conf(chan, confnum, 0, 0, NULL, NULL);
+	if (conf)
 		count = conf->users;
-		ast_atomic_fetchadd_int(&conf->refcount, -1);
-	} else
+	else
 		count = 0;
 
 	if (!ast_strlen_zero(localdata)){
@@ -1961,7 +1952,7 @@
 		}
 		if (!ast_strlen_zero(confno)) {
 			/* Check the validity of the conference */
-			cnf = find_conf(chan, confno, 1, dynamic, the_pin, 1, &confflags);
+			cnf = find_conf(chan, confno, 1, dynamic, the_pin, &confflags);
 			if (!cnf) {
 				res = ast_streamfile(chan, "conf-invalid", chan->language);
 				if (!res)
@@ -2007,13 +1998,8 @@
 									ast_log(LOG_WARNING, "Couldn't play invalid pin msg!\n");
 									break;
 								}
-								if (res < 0) {
-									ast_mutex_lock(&conflock);
-									if (ast_atomic_dec_and_test(&cnf->refcount))
-										conf_free(cnf);
-									ast_mutex_unlock(&conflock);
+								if (res < 0)
 									break;
-								}
 								pin[0] = res;
 								pin[1] = '\0';
 								res = -1;
@@ -2026,8 +2012,9 @@
 							allowretry = 0;
 							/* see if we need to get rid of the conference */
 							ast_mutex_lock(&conflock);
-							if (ast_atomic_dec_and_test(&cnf->refcount))
+							if (!cnf->users) {
 								conf_free(cnf);	
+							}
 							ast_mutex_unlock(&conflock);
 							break;
 						}

Modified: branches/1.2/include/asterisk/lock.h
URL: http://svn.digium.com/view/asterisk/branches/1.2/include/asterisk/lock.h?view=diff&rev=53134&r1=53133&r2=53134
==============================================================================
--- branches/1.2/include/asterisk/lock.h (original)
+++ branches/1.2/include/asterisk/lock.h Sat Feb  3 14:39:45 2007
@@ -666,31 +666,4 @@
 #define pthread_create __use_ast_pthread_create_instead__
 #endif
 
-int ast_atomic_fetchadd_int_slow(volatile int *p, int v);
-
-#include "asterisk/inline_api.h"
-
-#if defined (__i386__)
-AST_INLINE_API(int ast_atomic_fetchadd_int(volatile int *p, int v),
-{
-	__asm __volatile (
-	"       lock   xaddl   %0, %1 ;        "
-	: "+r" (v),                     /* 0 (result) */   
-	  "=m" (*p)                     /* 1 */
-	: "m" (*p));                    /* 2 */
-	return (v);
-})
-#else   /* low performance version in utils.c */
-AST_INLINE_API(int ast_atomic_fetchadd_int(volatile int *p, int v),
-{
-	return ast_atomic_fetchadd_int_slow(p, v);
-})
-#endif
-
-AST_INLINE_API(int ast_atomic_dec_and_test(volatile int *p),
-{
-	int a = ast_atomic_fetchadd_int(p, -1);
-	return a == 1; /* true if the value is 0 now (so it was 1 previously) */
-})
-
 #endif /* _ASTERISK_LOCK_H */

Modified: branches/1.2/utils.c
URL: http://svn.digium.com/view/asterisk/branches/1.2/utils.c?view=diff&rev=53134&r1=53133&r2=53134
==============================================================================
--- branches/1.2/utils.c (original)
+++ branches/1.2/utils.c Sat Feb  3 14:39:45 2007
@@ -907,14 +907,3 @@
 #endif
 }
 
-AST_MUTEX_DEFINE_STATIC(fetchadd_m); /* used for all fetc&add ops */
-
-int ast_atomic_fetchadd_int_slow(volatile int *p, int v)
-{
-        int ret;
-        ast_mutex_lock(&fetchadd_m);
-        ret = *p;
-        *p += v;
-        ast_mutex_unlock(&fetchadd_m);
-        return ret;
-}



More information about the asterisk-commits mailing list