[svn-commits] dvossel: branch dvossel/hd_confbridge r310886 - in /team/dvossel/hd_confbridg...

SVN commits to the Digium repositories svn-commits at lists.digium.com
Wed Mar 16 11:51:35 CDT 2011


Author: dvossel
Date: Wed Mar 16 11:51:32 2011
New Revision: 310886

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=310886
Log:
Addition of the 'leave_conference' menu action

Modified:
    team/dvossel/hd_confbridge/apps/app_confbridge.c
    team/dvossel/hd_confbridge/apps/confbridge/conf_config_parser.c
    team/dvossel/hd_confbridge/apps/confbridge/include/confbridge.h
    team/dvossel/hd_confbridge/configs/confbridge.conf.sample
    team/dvossel/hd_confbridge/main/bridging.c

Modified: team/dvossel/hd_confbridge/apps/app_confbridge.c
URL: http://svnview.digium.com/svn/asterisk/team/dvossel/hd_confbridge/apps/app_confbridge.c?view=diff&rev=310886&r1=310885&r2=310886
==============================================================================
--- team/dvossel/hd_confbridge/apps/app_confbridge.c (original)
+++ team/dvossel/hd_confbridge/apps/app_confbridge.c Wed Mar 16 11:51:32 2011
@@ -1171,6 +1171,11 @@
 				ao2_unlock(conference_bridge);
 			}
 			break;
+		case MENU_ACTION_LEAVE:
+			ao2_lock(conference_bridge);
+			ast_bridge_remove(conference_bridge->bridge, bridge_channel->chan);
+			ao2_unlock(conference_bridge);
+			break;
 		}
 	}
 	return res;
@@ -1201,8 +1206,6 @@
 		ast_moh_start(bridge_channel->chan, conference_bridge_user->u_profile.moh_class, NULL);
 	}
 	ao2_unlock(conference_bridge);
-
-	bridge_channel->state = AST_BRIDGE_CHANNEL_STATE_WAIT;
 
 	return res;
 }

Modified: team/dvossel/hd_confbridge/apps/confbridge/conf_config_parser.c
URL: http://svnview.digium.com/svn/asterisk/team/dvossel/hd_confbridge/apps/confbridge/conf_config_parser.c?view=diff&rev=310886&r1=310885&r2=310886
==============================================================================
--- team/dvossel/hd_confbridge/apps/confbridge/conf_config_parser.c (original)
+++ team/dvossel/hd_confbridge/apps/confbridge/conf_config_parser.c Wed Mar 16 11:51:32 2011
@@ -280,6 +280,7 @@
 	case MENU_ACTION_DECREASE_TALKING:
 	case MENU_ACTION_ADMIN_TOGGLE_LOCK:
 	case MENU_ACTION_ADMIN_KICK_LAST:
+	case MENU_ACTION_LEAVE:
 		break;
 	case MENU_ACTION_PLAYBACK:
 	case MENU_ACTION_PLAYBACK_AND_CONTINUE:
@@ -352,6 +353,8 @@
 		res |= add_action_to_menu_entry(menu_entry, MENU_ACTION_ADMIN_TOGGLE_LOCK, NULL);
 	} else if (!strcasecmp(action, "admin_kick_last")) {
 		res |= add_action_to_menu_entry(menu_entry, MENU_ACTION_ADMIN_KICK_LAST, NULL);
+	} else if (!strcasecmp(action, "leave_conference")) {
+		res |= add_action_to_menu_entry(menu_entry, MENU_ACTION_LEAVE, NULL);
 	} else if (!strncasecmp(action, "dialplan_exec", 13)) {
 		action_args = ast_strdupa(action);
 		if ((action_args = strchr(action, '(')) && (tmp = strrchr(action_args, ')'))) {
@@ -681,6 +684,9 @@
 			case MENU_ACTION_ADMIN_KICK_LAST:
 				ast_cli(a->fd, "admin_kick_last");
 				break;
+			case MENU_ACTION_LEAVE:
+				ast_cli(a->fd, "leave_conference");
+				break;
 			}
 			action_num++;
 		}

Modified: team/dvossel/hd_confbridge/apps/confbridge/include/confbridge.h
URL: http://svnview.digium.com/svn/asterisk/team/dvossel/hd_confbridge/apps/confbridge/include/confbridge.h?view=diff&rev=310886&r1=310885&r2=310886
==============================================================================
--- team/dvossel/hd_confbridge/apps/confbridge/include/confbridge.h (original)
+++ team/dvossel/hd_confbridge/apps/confbridge/include/confbridge.h Wed Mar 16 11:51:32 2011
@@ -61,6 +61,7 @@
 	MENU_ACTION_DIALPLAN_EXEC,
 	MENU_ACTION_ADMIN_TOGGLE_LOCK,
 	MENU_ACTION_ADMIN_KICK_LAST,
+	MENU_ACTION_LEAVE,
 };
 
 /*! The conference menu action contains both

Modified: team/dvossel/hd_confbridge/configs/confbridge.conf.sample
URL: http://svnview.digium.com/svn/asterisk/team/dvossel/hd_confbridge/configs/confbridge.conf.sample?view=diff&rev=310886&r1=310885&r2=310886
==============================================================================
--- team/dvossel/hd_confbridge/configs/confbridge.conf.sample (original)
+++ team/dvossel/hd_confbridge/configs/confbridge.conf.sample Wed Mar 16 11:51:32 2011
@@ -101,6 +101,8 @@
                                          ; commands in the dialplan.  Once the dialplan
                                          ; exits the user will be put back into the
                                          ; conference.  The possibilities are endless!
+; leave_conference ; This action allows a user to exit the conference and continue
+                   ; execution in the dialplan.
 ;
 ; admin_kick_last  ; This action allows an Admin to kick the last participant from the
                    ; conference. This action will only work for admins which allows

Modified: team/dvossel/hd_confbridge/main/bridging.c
URL: http://svnview.digium.com/svn/asterisk/team/dvossel/hd_confbridge/main/bridging.c?view=diff&rev=310886&r1=310885&r2=310886
==============================================================================
--- team/dvossel/hd_confbridge/main/bridging.c (original)
+++ team/dvossel/hd_confbridge/main/bridging.c Wed Mar 16 11:51:32 2011
@@ -856,6 +856,10 @@
 		hook->callback(bridge, bridge_channel, hook->hook_pvt);
 	} else {
 		ast_bridge_dtmf_stream(bridge, dtmf, bridge_channel->chan);
+	}
+
+	/* if the channel is still in feature state, revert it back to wait state */
+	if (bridge_channel->state == AST_BRIDGE_CHANNEL_STATE_FEATURE) {
 		ast_bridge_change_state(bridge_channel, AST_BRIDGE_CHANNEL_STATE_WAIT);
 	}
 




More information about the svn-commits mailing list