From 8c5643b2f9c20a3467e059d1365464af81288575 Mon Sep 17 00:00:00 2001
From: "Eliel C. Sardanons" <eliels@gmail.com>
Date: Wed, 13 May 2009 15:02:10 +0000
Subject: [PATCH] Do not lock the 'sessions' container, lock the allocated
 'session'.

There was a typo in the structure being locked, and we were locking the
'sessions' container instead of the 'session' structure thar we are modifying.
Reported by seanbright on #asterisk-dev, thanks!



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@194283 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 main/manager.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/main/manager.c b/main/manager.c
index 18e6b9bfad..b4067e9145 100644
--- a/main/manager.c
+++ b/main/manager.c
@@ -3376,7 +3376,6 @@ static void *session_do(void *data)
 	if (session == NULL) {
 		goto done;
 	}
-	ao2_lock(sessions);
 
 	flags = fcntl(ser->fd, F_GETFL);
 	if (!block_sockets) { /* make sure socket is non-blocking */
@@ -3386,6 +3385,7 @@ static void *session_do(void *data)
 	}
 	fcntl(ser->fd, F_SETFL, flags);
 
+	ao2_lock(session);
 	/* Hook to the tail of the event queue */
 	session->last_ev = grab_last();
 
@@ -3399,7 +3399,7 @@ static void *session_do(void *data)
 
 	AST_LIST_HEAD_INIT_NOLOCK(&session->datastores);
 
-	ao2_unlock(sessions);
+	ao2_unlock(session);
 	astman_append(&s, "Asterisk Call Manager/%s\r\n", AMI_VERSION);	/* welcome prompt */
 	for (;;) {
 		if ((res = do_message(&s)) < 0) {
-- 
GitLab