]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Pull CEL linkedid manipulation into cel.c
authorKinsey Moore <kmoore@digium.com>
Wed, 19 Jun 2013 12:55:34 +0000 (12:55 +0000)
committerKinsey Moore <kmoore@digium.com>
Wed, 19 Jun 2013 12:55:34 +0000 (12:55 +0000)
This finishes moving all CEL linkedid tracking entirely within cel.c
since that is now possible with channel snapshots.

This also removes another CEL linkedid manipulation function from cel.h
that has already been internalized and is neither called nor available
to link against.

Review: https://reviewboard.asterisk.org/r/2632/

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

include/asterisk/cel.h
main/cel.c

index 914037d4c164c75e16967d20064320419b6b0f9d..4f2445b939b4564982f87cb1a110e5956941b91a 100644 (file)
@@ -148,31 +148,6 @@ const char *ast_cel_get_type_name(enum ast_cel_event_type type);
  */
 enum ast_cel_event_type ast_cel_str_to_event_type(const char *name);
 
-/*! 
- * \brief Check and potentially retire a Linked ID
- *
- * \param chan channel that is being destroyed or its linkedid is changing
- *
- * \since 1.8
- *
- * If at least one CEL backend is looking for CEL_LINKEDID_END
- * events, this function will check if the given channel is the last
- * active channel with that linkedid, and if it is, emit a
- * CEL_LINKEDID_END event.
- *
- * \return nothing
- */
-void ast_cel_check_retire_linkedid(struct ast_channel *chan);
-
-/*!
- * \brief Inform CEL that a new linkedid is being used
- * \since 11
- *
- * \retval -1 error
- * \retval 0 success
- */
-int ast_cel_linkedid_ref(const char *linkedid);
-
 /*!
  * \brief Create a fake channel from data in a CEL event
  *
index 8110b116eb66df2dcd019a19ff4fac30ccff0dc6..b3802c7ee1163f230560a84b9198cf95188617a2 100644 (file)
@@ -634,6 +634,7 @@ static int cel_track_app(const char *const_app)
        return 1;
 }
 
+static int cel_linkedid_ref(const char *linkedid);
 static int report_event_snapshot(struct ast_channel_snapshot *snapshot,
                enum ast_cel_event_type event_type, const char *userdefevname,
                const char *extra, const char *peer2_name)
@@ -663,7 +664,7 @@ static int report_event_snapshot(struct ast_channel_snapshot *snapshot,
        /* Record the linkedid of new channels if we are tracking LINKEDID_END even if we aren't
         * reporting on CHANNEL_START so we can track when to send LINKEDID_END */
        if (ast_cel_track_event(AST_CEL_LINKEDID_END) && event_type == AST_CEL_CHANNEL_START && linkedid) {
-               if (ast_cel_linkedid_ref(linkedid)) {
+               if (cel_linkedid_ref(linkedid)) {
                        return -1;
                }
        }
@@ -868,7 +869,7 @@ struct ast_channel *ast_cel_fabricate_channel_from_event(const struct ast_event
        return tchan;
 }
 
-int ast_cel_linkedid_ref(const char *linkedid)
+static int cel_linkedid_ref(const char *linkedid)
 {
        char *lid;
 
@@ -909,7 +910,7 @@ int ast_cel_report_event(struct ast_channel *chan, enum ast_cel_event_type event
        /* Record the linkedid of new channels if we are tracking LINKEDID_END even if we aren't
         * reporting on CHANNEL_START so we can track when to send LINKEDID_END */
        if (ast_cel_track_event(AST_CEL_LINKEDID_END) && event_type == AST_CEL_CHANNEL_START && linkedid) {
-               if (ast_cel_linkedid_ref(linkedid)) {
+               if (cel_linkedid_ref(linkedid)) {
                        return -1;
                }
        }
@@ -1114,7 +1115,11 @@ static void cel_channel_linkedid_change(
                return;
        }
 
+       ast_assert(!ast_strlen_zero(new_snapshot->linkedid));
+       ast_assert(!ast_strlen_zero(old_snapshot->linkedid));
+
        if (strcmp(old_snapshot->linkedid, new_snapshot->linkedid)) {
+               cel_linkedid_ref(new_snapshot->linkedid);
                check_retire_linkedid(old_snapshot);
        }
 }