Index: asterisk/apps/app_meetme.c =================================================================== RCS file: /usr/cvsroot/asterisk/apps/app_meetme.c,v retrieving revision 1.62 diff -u -r1.62 app_meetme.c --- asterisk/apps/app_meetme.c 11 Oct 2004 15:40:24 -0000 1.62 +++ asterisk/apps/app_meetme.c 22 Oct 2004 20:31:13 -0000 @@ -88,6 +88,7 @@ " MeetMeAdmin(confno,command[,user]): Run admin command for conference\n" " 'K' -- Kick all users out of conference\n" " 'k' -- Kick one user out of conference\n" +" 'e' -- Eject last user that joined\n" " 'L' -- Lock conference\n" " 'l' -- Unlock conference\n" " 'M' -- Mute conference\n" @@ -496,6 +497,7 @@ { struct ast_conference *prev=NULL, *cur; struct ast_conf_user *user = malloc(sizeof(struct ast_conf_user)); + struct ast_conf_user *usr = NULL; int fd; struct zt_confinfo ztc; struct ast_frame *f; @@ -892,6 +894,23 @@ ast_waitstream(chan, ""); } break; + case '6': /* Eject last user */ + usr = conf->firstuser; + while(usr) { + if (usr->nextuser) { + usr = usr->nextuser; + } else { + if (usr->chan->name == chan->name) { + ast_streamfile(chan, "conf-errormenu", chan->language); + break; + } else { + usr->adminflags |= ADMINFLAG_KICKME; + break; + } + } + } + break; + menu_active = 0; default: menu_active = 0; /* Play an error message! */ @@ -1495,6 +1514,18 @@ } } break; + case 101: /* e: Eject last user*/ + user = cnf->firstuser; + while(user) { + if (user->nextuser) { + user = user->nextuser; + } else { + user->adminflags |= ADMINFLAG_KICKME; + break; + } + } + break; + case 77: /* M: Mute */ if (user) { user->adminflags |= ADMINFLAG_MUTED;