Merged revisions 304683 via svnmerge from
authorSean Bright <sean@malleable.com>
Fri, 28 Jan 2011 22:59:27 +0000 (22:59 +0000)
committerSean Bright <sean@malleable.com>
Fri, 28 Jan 2011 22:59:27 +0000 (22:59 +0000)
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

index 561ac46..5910403 100644 (file)
@@ -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;