From: Sean Bright Date: Fri, 28 Jan 2011 21:22:09 +0000 (+0000) Subject: Don't leak references if we can't create a pseudo channel for mixing in MeetMe. X-Git-Tag: 1.6.2.18-rc1~39 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b1cf1879bc55ea11b03e5c7fc7266a2a772d00a0;p=thirdparty%2Fasterisk.git 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. git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.2@304659 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/apps/app_meetme.c b/apps/app_meetme.c index 8191df6eb4..963b729f23 100644 --- a/apps/app_meetme.c +++ b/apps/app_meetme.c @@ -1123,6 +1123,11 @@ static struct ast_conference *build_conf(char *confno, char *pin, char *pinadmin 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; @@ -1144,7 +1149,11 @@ static struct ast_conference *build_conf(char *confno, char *pin, char *pinadmin 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; @@ -3429,6 +3438,8 @@ bailoutandtrynormal: snprintf(meetmesecs, sizeof(meetmesecs), "%d", (int) (time(NULL) - user->jointime)); pbx_builtin_setvar_helper(chan, "MEETMESECS", meetmesecs); + /* ao2_ref(user, -1); */ + /* Return the RealTime bookid for CDR linking */ if (rt_schedule) { pbx_builtin_setvar_helper(chan, "MEETMEBOOKID", conf->bookid);