From: Jason Parker Date: Wed, 12 Dec 2007 21:22:58 +0000 (+0000) Subject: Merged revisions 92617 via svnmerge from X-Git-Tag: 1.6.0-beta1~3^2~447 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7f6b2066f9e04035de9831e874ea784de657a67e;p=thirdparty%2Fasterisk.git Merged revisions 92617 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 (closes issue #11048) ........ r92617 | qwell | 2007-12-12 15:15:45 -0600 (Wed, 12 Dec 2007) | 4 lines Don't increment user count until after name has been recorded (if enabled). Issue 11048, tested by pep. ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@92618 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/apps/app_meetme.c b/apps/app_meetme.c index 26a565f056..14e7c259d4 100644 --- a/apps/app_meetme.c +++ b/apps/app_meetme.c @@ -1531,7 +1531,8 @@ static int conf_run(struct ast_channel *chan, struct ast_conference *conf, int c long time_left_ms = 0; struct timeval nexteventts = { 0, }; int to; - + int setusercount = 0; + if (!(user = ast_calloc(1, sizeof(*user)))) return ret; @@ -1671,9 +1672,6 @@ static int conf_run(struct ast_channel *chan, struct ast_conference *conf, int c goto outrun; } - if (confflags & CONFFLAG_MARKEDUSER) - conf->markedusers++; - ast_mutex_lock(&conf->playlock); if (AST_LIST_EMPTY(&conf->userlist)) @@ -1695,12 +1693,33 @@ static int conf_run(struct ast_channel *chan, struct ast_conference *conf, int c user->userflags = confflags; user->adminflags = (confflags & CONFFLAG_STARTMUTED) ? ADMINFLAG_SELFMUTED : 0; user->talking = -1; + + ast_mutex_unlock(&conf->playlock); + + if (!(confflags & CONFFLAG_QUIET) && ((confflags & CONFFLAG_INTROUSER) || (confflags & CONFFLAG_INTROUSERNOREVIEW))) { + snprintf(user->namerecloc, sizeof(user->namerecloc), + "%s/meetme/meetme-username-%s-%d", ast_config_AST_SPOOL_DIR, + conf->confno, user->user_no); + if (confflags & CONFFLAG_INTROUSERNOREVIEW) + res = ast_play_and_record(chan, "vm-rec-name", user->namerecloc, 10, "sln", &duration, 128, 0, NULL); + else + res = ast_record_review(chan, "vm-rec-name", user->namerecloc, 10, "sln", &duration, NULL); + if (res == -1) + goto outrun; + } + + ast_mutex_lock(&conf->playlock); + + if (confflags & CONFFLAG_MARKEDUSER) + conf->markedusers++; conf->users++; if (rt_log_members) { /* Update table */ snprintf(members, sizeof(members), "%d", conf->users); ast_update_realtime("meetme", "confno", conf->confno, "members", members, NULL); } + setusercount = 1; + /* This device changed state now - if this is the first user */ if (conf->users == 1) ast_devstate_changed(AST_DEVICE_INUSE, "meetme:%s", conf->confno); @@ -1719,18 +1738,6 @@ static int conf_run(struct ast_channel *chan, struct ast_conference *conf, int c ast_copy_string(exitcontext, chan->context, sizeof(exitcontext)); } - if (!(confflags & CONFFLAG_QUIET) && ((confflags & CONFFLAG_INTROUSER) || (confflags & CONFFLAG_INTROUSERNOREVIEW))) { - snprintf(user->namerecloc, sizeof(user->namerecloc), - "%s/meetme/meetme-username-%s-%d", ast_config_AST_SPOOL_DIR, - conf->confno, user->user_no); - if (confflags & CONFFLAG_INTROUSERNOREVIEW) - res = ast_play_and_record(chan, "vm-rec-name", user->namerecloc, 10, "sln", &duration, 128, 0, NULL); - else - res = ast_record_review(chan, "vm-rec-name", user->namerecloc, 10, "sln", &duration, NULL); - if (res == -1) - goto outrun; - } - if ( !(confflags & (CONFFLAG_QUIET | CONFFLAG_NOONLYPERSON)) ) { if (conf->users == 1 && !(confflags & CONFFLAG_WAITMARKED)) if (!ast_streamfile(chan, "conf-onlyperson", chan->language)) @@ -2647,14 +2654,16 @@ bailoutandtrynormal: (long)(now.tv_sec - user->jointime)); } - conf->users--; - if (rt_log_members){ - /* Update table */ - snprintf(members, sizeof(members), "%d", conf->users); - ast_update_realtime("meetme", "confno", conf->confno, "members", members, NULL); + if (setusercount) { + conf->users--; + if (rt_log_members){ + /* Update table */ + snprintf(members, sizeof(members), "%d", conf->users); + ast_update_realtime("meetme", "confno", conf->confno, "members", members, NULL); + } + if (confflags & CONFFLAG_MARKEDUSER) + conf->markedusers--; } - if (confflags & CONFFLAG_MARKEDUSER) - conf->markedusers--; /* Remove ourselves from the list */ AST_LIST_REMOVE(&conf->userlist, user, list); diff --git a/channels/ringtone.h b/channels/ringtone.h index f4eac96fc7..559c42a7be 100644 --- a/channels/ringtone.h +++ b/channels/ringtone.h @@ -1,9 +1,5 @@ /* ringtone.h: Generated from frequencies 440 and 480 by gentone. 200 samples */ -/*! \file - \brief - Generated from frequencies 440 and 480 by gentone. 200 samples -*/ static short ringtone[200] = { 0, 11581, 21659, 28927, 32445, 31764, 26981, 18727, 8084, -3559, -14693, -23875, -29927, -32083, -30088, -24228,