From c5cf436a9299e51d838794d731ecab1874aa7109 Mon Sep 17 00:00:00 2001
From: Sean Bright <sean@malleable.com>
Date: Fri, 28 Jan 2011 22:59:27 +0000
Subject: [PATCH] Merged revisions 304683 via svnmerge from
 https://origsvn.digium.com/svn/asterisk/branches/1.8

................
  r304683 | seanbright | 2011-01-28 17:54:23 -0500 (Fri, 28 Jan 2011) | 16 lines

  Merged revisions 304659,304682 via svnmerge from
  https://origsvn.digium.com/svn/asterisk/branches/1.6.2

  ........
    r304659 | seanbright | 2011-01-28 16:22:09 -0500 (Fri, 28 Jan 2011) | 5 lines

    Don't leak references if we can't create a pseudo channel for mixing in MeetMe.

    If there was a problem allocating a pseudo channel when building our meetme, we
    weren't destroying our user container or destroying the mutexes that we created.
  ........
    r304682 | seanbright | 2011-01-28 17:38:05 -0500 (Fri, 28 Jan 2011) | 2 lines

    Revert part of the previous commit that snuck in.
  ........
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@304684 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 apps/app_meetme.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/apps/app_meetme.c b/apps/app_meetme.c
index 561ac46e89..5910403b34 100644
--- a/apps/app_meetme.c
+++ b/apps/app_meetme.c
@@ -1231,6 +1231,11 @@ static struct ast_conference *build_conf(const char *confno, const char *pin,
 			ast_log(LOG_WARNING, "Unable to open DAHDI pseudo device\n");
 			if (cnf->fd >= 0)
 				close(cnf->fd);
+			ao2_ref(cnf->usercontainer, -1);
+			ast_mutex_destroy(&cnf->playlock);
+			ast_mutex_destroy(&cnf->listenlock);
+			ast_mutex_destroy(&cnf->recordthreadlock);
+			ast_mutex_destroy(&cnf->announcethreadlock);
 			ast_free(cnf);
 			cnf = NULL;
 			goto cnfout;
@@ -1256,7 +1261,11 @@ static struct ast_conference *build_conf(const char *confno, const char *pin,
 				ast_hangup(cnf->chan);
 			else
 				close(cnf->fd);
-
+			ao2_ref(cnf->usercontainer, -1);
+			ast_mutex_destroy(&cnf->playlock);
+			ast_mutex_destroy(&cnf->listenlock);
+			ast_mutex_destroy(&cnf->recordthreadlock);
+			ast_mutex_destroy(&cnf->announcethreadlock);
 			ast_free(cnf);
 			cnf = NULL;
 			goto cnfout;
-- 
GitLab