Fix incorrect MeetME conference bridge reference count decrementing and sometimes...
authorJoshua Colp <jcolp@digium.com>
Thu, 20 Sep 2012 19:16:59 +0000 (19:16 +0000)
committerJoshua Colp <jcolp@digium.com>
Thu, 20 Sep 2012 19:16:59 +0000 (19:16 +0000)
When using the 'e' or 'E' option to MeetMe the configured conference bridges are loaded and examined to see
if any are empty. If no conference bridges are empty the caller is prompted to enter the number of one.
This operation left around a pointer to the last created conference bridge still containing participants.
When the caller that was not able to find any empty conference bridge hung up this pointer was disposed of
and the reference count of the conference bridge decremented. If there was only a single participant in the
conference bridge it was ultimately destroyed prematurely.

(closes issue AST-994)
Reported by: John Bigelow
........

Merged revisions 373242 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 373245 from http://svn.asterisk.org/svn/asterisk/branches/10
........

Merged revisions 373246 from http://svn.asterisk.org/svn/asterisk/branches/11

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@373247 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_meetme.c

index daf9477..1409f46 100644 (file)
@@ -4454,6 +4454,7 @@ static int conf_exec(struct ast_channel *chan, const char *data)
                                                                        }
                                                                }
                                                                AST_LIST_UNLOCK(&confs);
+                                                               cnf = NULL;
                                                                if (!found) {
                                                                        /* At this point, we have a confno_tmp (static conference) that is empty */
                                                                        if ((empty_no_pin && ast_strlen_zero(stringp)) || (!empty_no_pin)) {