The patch attached to this email adds the option to kick all members
of a conference, by using the "NConference kick _conf_ all" command.

This patch also applies to the trunk version, but I have only used it
with the 1.2 branch.
Index: conference.c
===================================================================
--- conference.c	(revision 4731)
+++ conference.c	(working copy)
@@ -138,6 +138,19 @@
 		member = member->next ;
 	    } 
 	    break;
+	case CONF_ACTION_KICK_ALL:
+	    member = conf->memberlist;
+	    while (member != NULL)
+	    {
+	 	cw_mutex_lock( &member->lock ) ;
+		queue_incoming_silent_frame(member,2);
+		/* We don't play a sound, since all will leave. */
+		member->force_remove_flag = 1;
+		cw_log(CW_CONF_DEBUG,"(CQ) Conf %s Member Kicked: %s\n",conf->name, member->chan->name);
+		cw_mutex_unlock( &member->lock ) ;
+		member = member->next;
+	    } 
+	    break;
 	case CONF_ACTION_ENABLE_SOUNDS: 
 	    // get list of conference members
 	    member = conf->memberlist ;
Index: cli.c
===================================================================
--- cli.c	(revision 4731)
+++ cli.c	(working copy)
@@ -272,14 +272,15 @@
 	}
 
 	else if ( !strcmp(argv[1], "kick") ) {
-	    if ( member == NULL ) {
-		    cw_cli(fd, "Conference: %s - Member is not correct.\n", conf->name);
-	    }
+	    if ( member == NULL )
+		    add_command_to_queue( conf, NULL, CONF_ACTION_KICK_ALL, 0, "" );
 	    else 
 	    {
+		cw_mutex_lock(&member->lock);
 		queue_incoming_silent_frame(member,5);
 		conference_queue_sound( member, "conf-kicked" );
 		member->force_remove_flag = 1;
+		cw_mutex_unlock(&member->lock);
 		cw_cli(fd, "Conference: %s - Member %s has been kicked.\n", conf->name, member->chan->name);
 	    }
 	}
Index: conference.h
===================================================================
--- conference.h	(revision 4731)
+++ conference.h	(working copy)
@@ -26,7 +26,8 @@
     CONF_ACTION_MUTE_ALL,
     CONF_ACTION_QUEUE_SOUND,
     CONF_ACTION_QUEUE_NUMBER,
-    CONF_ACTION_PLAYMOH
+    CONF_ACTION_PLAYMOH,
+    CONF_ACTION_KICK_ALL
 };
 
 struct cw_conf_command_queue 
_______________________________________________
Callweaver-dev mailing list
[email protected]
http://lists.callweaver.org/mailman/listinfo/callweaver-dev

Reply via email to