This patch adds custom device state handling for ConfBridge conferences,
authorJared Smith <jaredsmith@jaredsmith.net>
Mon, 29 Mar 2010 14:07:44 +0000 (14:07 +0000)
committerJared Smith <jaredsmith@jaredsmith.net>
Mon, 29 Mar 2010 14:07:44 +0000 (14:07 +0000)
matching the devstate handling of the MeetMe conferences.

Review: https://reviewboard.asterisk.org/r/572/
Closes issue #16972

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@255281 65c4cc65-6c06-0410-ace0-fbb531ad65f3

CHANGES
apps/app_confbridge.c

diff --git a/CHANGES b/CHANGES
index 9507410..8e1e962 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -141,6 +141,8 @@ Applications
    type features.
  * Added new application VMSayName that will play the recorded name of the voicemail
    user if it exists, otherwise will play the mailbox number.
+ * Added custom device states to ConfBridge bridges.  Use 'confbridge:<name>' to
+   retrieve state for a particular bridge, where <name> is the conference name
 
 Dialplan Functions
 ------------------
index 6ea2ac4..88fc81a 100644 (file)
@@ -463,6 +463,11 @@ static struct conference_bridge *join_conference_bridge(const char *name, struct
                conference_bridge->markedusers++;
        }
 
+       /* Set the device state for this conference */
+       if (conference_bridge->users == 1) {
+               ast_devstate_changed(AST_DEVICE_INUSE, "confbridge:%s", conference_bridge->name);
+       }
+
        /* If the caller is a marked user or is waiting for a marked user to enter pass 'em off, otherwise pass them off to do regular joining stuff */
        if (ast_test_flag(&conference_bridge_user->flags, OPTION_MARKEDUSER | OPTION_WAITMARKED)) {
                post_join_marked(conference_bridge, conference_bridge_user);
@@ -533,6 +538,9 @@ static void  leave_conference_bridge(struct conference_bridge *conference_bridge
                        }
                }
        } else {
+               /* Set device state to "not in use" */
+               ast_devstate_changed(AST_DEVICE_NOT_INUSE, "confbridge:%s", conference_bridge->name);
+
                ao2_unlink(conference_bridges, conference_bridge);
        }