[asterisk-commits] oej: branch oej/pinelonely-meetme-single-user-hangup r311471 - /team/oej/pine...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Mon Mar 21 10:27:58 CDT 2011
Author: oej
Date: Mon Mar 21 10:27:54 2011
New Revision: 311471
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=311471
Log:
Dangerous code
Modified:
team/oej/pinelonely-meetme-single-user-hangup/apps/app_meetme.c
Modified: team/oej/pinelonely-meetme-single-user-hangup/apps/app_meetme.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/pinelonely-meetme-single-user-hangup/apps/app_meetme.c?view=diff&rev=311471&r1=311470&r2=311471
==============================================================================
--- team/oej/pinelonely-meetme-single-user-hangup/apps/app_meetme.c (original)
+++ team/oej/pinelonely-meetme-single-user-hangup/apps/app_meetme.c Mon Mar 21 10:27:54 2011
@@ -167,6 +167,8 @@
CONFFLAG_SLA_TRUNK = (1 << 27),
/*! Do not write any audio to this channel until the state is up. */
CONFFLAG_NO_AUDIO_UNTIL_UP = (1 << 28),
+ /*! The last remaining user needs a hangup - emulate a bridge */
+ CONFFLAG_KILL_LAST_MAN_STANDING = (1 << 29),
};
enum {
@@ -186,6 +188,7 @@
AST_APP_OPTION('F', CONFFLAG_PASS_DTMF ),
AST_APP_OPTION('i', CONFFLAG_INTROUSER ),
AST_APP_OPTION('I', CONFFLAG_INTROUSERNOREVIEW ),
+ AST_APP_OPTION('k', CONFFLAG_KILL_LAST_MAN_STANDING ),
AST_APP_OPTION('M', CONFFLAG_MOH ),
AST_APP_OPTION('m', CONFFLAG_STARTMUTED ),
AST_APP_OPTION('o', CONFFLAG_OPTIMIZETALKER ),
@@ -237,6 +240,7 @@
" 'F' -- Pass DTMF through the conference.\n"
" 'i' -- announce user join/leave with review\n"
" 'I' -- announce user join/leave without review\n"
+" 'k' -- if there's only one remaining user, cancel the conference\n"
" 'l' -- set listen only mode (Listen only, no talking)\n"
" 'm' -- set initially muted\n"
" 'M' -- enable music on hold when the conference has a single caller\n"
@@ -2566,6 +2570,13 @@
/* Change any states */
if (!conf->users)
ast_device_state_changed("meetme:%s", conf->confno);
+
+ /* If we're supposed to clean up the conference at this point, let's do it
+ This flag is meant to kill a conference with only one person remaining.
+ */
+ if (conf->users == 1 && (confflags & CONFFLAG_KILL_LAST_MAN_STANDING)) {
+ ao2_callback(cnf->usercontainer, 0, user_set_kickme_cb, NULL);
+ }
/* Return the number of seconds the user was in the conf */
snprintf(meetmesecs, sizeof(meetmesecs), "%d", (int) (time(NULL) - user->jointime));
More information about the asterisk-commits
mailing list