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
1.6.2
Sean Bright 16 years ago
parent c6985c71da
commit b1cf1879bc

@ -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);

Loading…
Cancel
Save