[asterisk-commits] tilghman: branch 1.4 r280982 - /branches/1.4/main/pbx.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Thu Aug 5 02:28:38 CDT 2010


Author: tilghman
Date: Thu Aug  5 02:28:33 2010
New Revision: 280982

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=280982
Log:
Change context lock back to a mutex, because functionality depends upon the lock being recursive.

(closes issue #17643)
 Reported by: zerohalo
 Patches: 
       20100726__issue17643.diff.txt uploaded by tilghman (license 14)
 Tested by: zerohalo

Modified:
    branches/1.4/main/pbx.c

Modified: branches/1.4/main/pbx.c
URL: http://svnview.digium.com/svn/asterisk/branches/1.4/main/pbx.c?view=diff&rev=280982&r1=280981&r2=280982
==============================================================================
--- branches/1.4/main/pbx.c (original)
+++ branches/1.4/main/pbx.c Thu Aug  5 02:28:33 2010
@@ -492,7 +492,11 @@
 };
 
 static struct ast_context *contexts;
-AST_RWLOCK_DEFINE_STATIC(conlock); 		/*!< Lock for the ast_context list */
+/*!\brief Lock for the ast_context list
+ * This lock MUST be recursive, or a deadlock on reload may result.  See
+ * https://issues.asterisk.org/view.php?id=17643
+ */
+AST_MUTEX_DEFINE_STATIC(conlock);
 
 static AST_LIST_HEAD_STATIC(apps, ast_app);
 
@@ -6193,22 +6197,22 @@
  */
 int ast_lock_contexts()
 {
-	return ast_rwlock_wrlock(&conlock);
+	return ast_mutex_lock(&conlock);
 }
 
 int ast_rdlock_contexts(void)
 {
-	return ast_rwlock_rdlock(&conlock);
+	return ast_mutex_lock(&conlock);
 }
 
 int ast_wrlock_contexts(void)
 {
-	return ast_rwlock_wrlock(&conlock);
+	return ast_mutex_lock(&conlock);
 }
 
 int ast_unlock_contexts()
 {
-	return ast_rwlock_unlock(&conlock);
+	return ast_mutex_unlock(&conlock);
 }
 
 /*




More information about the asterisk-commits mailing list