[asterisk-commits] seanbright: branch 1.8 r304730 - in /branches/1.8: ./ apps/app_meetme.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Sat Jan 29 11:15:32 CST 2011


Author: seanbright
Date: Sat Jan 29 11:15:27 2011
New Revision: 304730

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=304730
Log:
Merged revisions 304729 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/branches/1.6.2

........
  r304729 | seanbright | 2011-01-29 12:01:51 -0500 (Sat, 29 Jan 2011) | 15 lines
  
  Make sure that we unref the correct object when ejecting the most recent caller.
  
  Currently, when we kick the last user to enter, we decrement our own reference
  count which results in a crash when we kick another user or when we exit the
  conference ourselves.
  
  This will fix #18225 in 1.8 and trunk, but that particular bug does not exist in
  1.6.2.
  
  (closes issue #18225)
  Reported by: kenji
  Patches:
        issue18225.patch uploaded by seanbright (license 71)
  Tested by: seanbright
........

Modified:
    branches/1.8/   (props changed)
    branches/1.8/apps/app_meetme.c

Propchange: branches/1.8/
------------------------------------------------------------------------------
Binary property 'branch-1.6.2-merged' - no diff available.

Modified: branches/1.8/apps/app_meetme.c
URL: http://svnview.digium.com/svn/asterisk/branches/1.8/apps/app_meetme.c?view=diff&rev=304730&r1=304729&r2=304730
==============================================================================
--- branches/1.8/apps/app_meetme.c (original)
+++ branches/1.8/apps/app_meetme.c Sat Jan 29 11:15:27 2011
@@ -2188,7 +2188,6 @@
 static int conf_run(struct ast_channel *chan, struct ast_conference *conf, struct ast_flags64 *confflags, char *optargs[])
 {
 	struct ast_conf_user *user = NULL;
-	struct ast_conf_user *usr = NULL;
 	int fd;
 	struct dahdi_confinfo dahdic, dahdic_empty;
 	struct ast_frame *f;
@@ -3172,6 +3171,7 @@
 							int keepplaying;
 							int playednamerec;
 							struct ao2_iterator user_iter;
+							struct ast_conf_user *usr = NULL;
 							switch(dtmf) {
 							case '1': /* *81 Roll call */
 								keepplaying = 1;
@@ -3210,7 +3210,7 @@
 									}
 								}
 								user_iter = ao2_iterator_init(conf->usercontainer, 0);
-								while((user = ao2_iterator_next(&user_iter))) {
+								while((usr = ao2_iterator_next(&user_iter))) {
 									if (ast_fileexists(usr->namerecloc, NULL, NULL)) {
 										if (keepplaying && !ast_streamfile(chan, usr->namerecloc, chan->language)) {
 											res = ast_waitstream(chan, AST_DIGIT_ANY);
@@ -3220,7 +3220,7 @@
 										}
 										playednamerec = 1;
 									}
-									ao2_ref(user, -1);
+									ao2_ref(usr, -1);
 								}
 								ao2_iterator_destroy(&user_iter);
 								if (keepplaying && playednamerec && !ast_streamfile(chan, "conf-roll-callcomplete", chan->language)) {
@@ -3364,6 +3364,7 @@
 								break;
 							case '3': /* Eject last user */
 							{
+								struct ast_conf_user *usr = NULL;
 								int max_no = 0;
 								ao2_callback(conf->usercontainer, OBJ_NODATA, user_max_cmp, &max_no);
 								menu_active = 0;
@@ -3375,7 +3376,7 @@
 								} else {
 									usr->adminflags |= ADMINFLAG_KICKME;
 								}
-								ao2_ref(user, -1);
+								ao2_ref(usr, -1);
 								ast_stopstream(chan);
 								break;	
 							}




More information about the asterisk-commits mailing list