[svn-commits] dlee: branch dlee/ari-url-shuffle r392280 - in /team/dlee/ari-url-shuffle: ./...

SVN commits to the Digium repositories svn-commits at lists.digium.com
Wed Jun 19 17:54:17 CDT 2013


Author: dlee
Date: Wed Jun 19 17:54:15 2013
New Revision: 392280

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=392280
Log:
Merged revisions 392139-392279 from http://svn.asterisk.org/svn/asterisk/trunk

Modified:
    team/dlee/ari-url-shuffle/   (props changed)
    team/dlee/ari-url-shuffle/Makefile
    team/dlee/ari-url-shuffle/funcs/func_cdr.c
    team/dlee/ari-url-shuffle/include/asterisk/bridging.h
    team/dlee/ari-url-shuffle/include/asterisk/cel.h
    team/dlee/ari-url-shuffle/main/Makefile
    team/dlee/ari-url-shuffle/main/bridging.c
    team/dlee/ari-url-shuffle/main/bridging_basic.c
    team/dlee/ari-url-shuffle/main/cel.c
    team/dlee/ari-url-shuffle/tests/test_substitution.c

Propchange: team/dlee/ari-url-shuffle/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Wed Jun 19 17:54:15 2013
@@ -1,1 +1,1 @@
-/trunk:1-392136
+/trunk:1-392279

Modified: team/dlee/ari-url-shuffle/Makefile
URL: http://svnview.digium.com/svn/asterisk/team/dlee/ari-url-shuffle/Makefile?view=diff&rev=392280&r1=392279&r2=392280
==============================================================================
--- team/dlee/ari-url-shuffle/Makefile (original)
+++ team/dlee/ari-url-shuffle/Makefile Wed Jun 19 17:54:15 2013
@@ -251,8 +251,8 @@
 MOD_SUBDIRS_MENUSELECT_TREE:=$(MOD_SUBDIRS:%=%-menuselect-tree)
 
 ifneq ($(findstring darwin,$(OSARCH)),)
-  _ASTCFLAGS+=-D__Darwin__
-  _SOLINK=-Xlinker -macosx_version_min -Xlinker 10.6 -Xlinker -undefined -Xlinker dynamic_lookup
+  _ASTCFLAGS+=-D__Darwin__ -mmacosx-version-min=10.6
+  _SOLINK=-mmacosx-version-min=10.6 -Xlinker -undefined -Xlinker dynamic_lookup
   _SOLINK+=/usr/lib/bundle1.o
   SOLINK=-bundle $(_SOLINK)
   DYLINK=-Xlinker -dylib $(_SOLINK)

Modified: team/dlee/ari-url-shuffle/funcs/func_cdr.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/ari-url-shuffle/funcs/func_cdr.c?view=diff&rev=392280&r1=392279&r2=392280
==============================================================================
--- team/dlee/ari-url-shuffle/funcs/func_cdr.c (original)
+++ team/dlee/ari-url-shuffle/funcs/func_cdr.c Wed Jun 19 17:54:15 2013
@@ -205,8 +205,9 @@
 		    char *buf, size_t len)
 {
 	char format_buf[128];
+	char *value = NULL;
 	struct ast_flags flags = { 0 };
-	char tempbuf[128];
+	char tempbuf[512];
 	char *info;
 	AST_DECLARE_APP_ARGS(args,
 			     AST_APP_ARG(variable);
@@ -228,7 +229,15 @@
 		ast_app_parse_options(cdr_func_options, &flags, NULL, args.options);
 	}
 
-	if (ast_cdr_getvar(ast_channel_name(chan), args.variable, tempbuf, sizeof(tempbuf))) {
+	if (ast_strlen_zero(ast_channel_name(chan))) {
+		/* Format request on a dummy channel */
+		ast_cdr_format_var(ast_channel_cdr(chan), args.variable, &value, tempbuf, sizeof(tempbuf), 0);
+		if (ast_strlen_zero(value)) {
+			return 0;
+		}
+		ast_copy_string(tempbuf, value, sizeof(tempbuf));
+		ast_set_flag(&flags, OPT_UNPARSED);
+	}else if (ast_cdr_getvar(ast_channel_name(chan), args.variable, tempbuf, sizeof(tempbuf))) {
 		return 0;
 	}
 

Modified: team/dlee/ari-url-shuffle/include/asterisk/bridging.h
URL: http://svnview.digium.com/svn/asterisk/team/dlee/ari-url-shuffle/include/asterisk/bridging.h?view=diff&rev=392280&r1=392279&r2=392280
==============================================================================
--- team/dlee/ari-url-shuffle/include/asterisk/bridging.h (original)
+++ team/dlee/ari-url-shuffle/include/asterisk/bridging.h Wed Jun 19 17:54:15 2013
@@ -436,6 +436,8 @@
 	unsigned int reconfigured:1;
 	/*! TRUE if the bridge has been dissolved.  Any channel that now tries to join is immediately ejected. */
 	unsigned int dissolved:1;
+	/*! TRUE if the bridge construction was completed. */
+	unsigned int construction_completed:1;
 };
 
 /*!

Modified: team/dlee/ari-url-shuffle/include/asterisk/cel.h
URL: http://svnview.digium.com/svn/asterisk/team/dlee/ari-url-shuffle/include/asterisk/cel.h?view=diff&rev=392280&r1=392279&r2=392280
==============================================================================
--- team/dlee/ari-url-shuffle/include/asterisk/cel.h (original)
+++ team/dlee/ari-url-shuffle/include/asterisk/cel.h Wed Jun 19 17:54:15 2013
@@ -148,31 +148,6 @@
  */
 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
  *

Modified: team/dlee/ari-url-shuffle/main/Makefile
URL: http://svnview.digium.com/svn/asterisk/team/dlee/ari-url-shuffle/main/Makefile?view=diff&rev=392280&r1=392279&r2=392280
==============================================================================
--- team/dlee/ari-url-shuffle/main/Makefile (original)
+++ team/dlee/ari-url-shuffle/main/Makefile Wed Jun 19 17:54:15 2013
@@ -56,7 +56,7 @@
 
 ifneq ($(findstring darwin,$(OSARCH)),)
   AST_LIBS+=-lresolv
-  ASTLINK=-Xlinker -macosx_version_min -Xlinker 10.6 -Xlinker -undefined -Xlinker dynamic_lookup -force_flat_namespace
+  ASTLINK=-mmacosx-version-min=10.6 -Xlinker -undefined -Xlinker dynamic_lookup -force_flat_namespace
   ASTLINK+=/usr/lib/bundle1.o
 else
 # These are used for all but Darwin

Modified: team/dlee/ari-url-shuffle/main/bridging.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/ari-url-shuffle/main/bridging.c?view=diff&rev=392280&r1=392279&r2=392280
==============================================================================
--- team/dlee/ari-url-shuffle/main/bridging.c (original)
+++ team/dlee/ari-url-shuffle/main/bridging.c Wed Jun 19 17:54:15 2013
@@ -651,6 +651,7 @@
 		|| ast_bridge_channel_establish_roles(bridge_channel)) {
 		ast_debug(1, "Bridge %s: pushing %p(%s) into bridge failed\n",
 			bridge->uniqueid, bridge_channel, ast_channel_name(bridge_channel->chan));
+		bridge_features_remove(bridge_channel->features, AST_BRIDGE_HOOK_REMOVE_ON_PULL);
 		return -1;
 	}
 	bridge_channel->in_bridge = 1;
@@ -1381,6 +1382,7 @@
 static struct stasis_message *create_bridge_snapshot_message(struct ast_bridge *bridge)
 {
 	RAII_VAR(struct ast_bridge_snapshot *, snapshot, NULL, ao2_cleanup);
+
 	snapshot = ast_bridge_snapshot_create(bridge);
 	if (!snapshot) {
 		return NULL;
@@ -1392,17 +1394,21 @@
 static void destroy_bridge(void *obj)
 {
 	struct ast_bridge *bridge = obj;
-	RAII_VAR(struct stasis_message *, clear_msg, NULL, ao2_cleanup);
 
 	ast_debug(1, "Bridge %s: actually destroying %s bridge, nobody wants it anymore\n",
 		bridge->uniqueid, bridge->v_table->name);
 
-	clear_msg = create_bridge_snapshot_message(bridge);
-	if (clear_msg) {
-		RAII_VAR(struct stasis_message *, msg, NULL, ao2_cleanup);
-		msg = stasis_cache_clear_create(clear_msg);
-		if (msg) {
-			stasis_publish(ast_bridge_topic(bridge), msg);
+	if (bridge->construction_completed) {
+		RAII_VAR(struct stasis_message *, clear_msg, NULL, ao2_cleanup);
+
+		clear_msg = create_bridge_snapshot_message(bridge);
+		if (clear_msg) {
+			RAII_VAR(struct stasis_message *, msg, NULL, ao2_cleanup);
+
+			msg = stasis_cache_clear_create(clear_msg);
+			if (msg) {
+				stasis_publish(ast_bridge_topic(bridge), msg);
+			}
 		}
 	}
 
@@ -1446,6 +1452,7 @@
 struct ast_bridge *ast_bridge_register(struct ast_bridge *bridge)
 {
 	if (bridge) {
+		bridge->construction_completed = 1;
 		ast_bridge_publish_state(bridge);
 		if (!ao2_link(bridges, bridge)) {
 			ast_bridge_destroy(bridge);
@@ -1494,8 +1501,8 @@
 	/* Use our helper function to find the "best" bridge technology. */
 	self->technology = find_best_technology(capabilities, self);
 	if (!self->technology) {
-		ast_debug(1, "Bridge %s: Could not create.  No technology available to support it.\n",
-			self->uniqueid);
+		ast_log(LOG_WARNING, "Bridge %s: Could not create class %s.  No technology to support it.\n",
+			self->uniqueid, self->v_table->name);
 		ao2_ref(self, -1);
 		return NULL;
 	}
@@ -1504,7 +1511,7 @@
 	ast_debug(1, "Bridge %s: calling %s technology constructor\n",
 		self->uniqueid, self->technology->name);
 	if (self->technology->create && self->technology->create(self)) {
-		ast_debug(1, "Bridge %s: failed to setup %s technology\n",
+		ast_log(LOG_WARNING, "Bridge %s: failed to setup bridge technology %s\n",
 			self->uniqueid, self->technology->name);
 		ao2_ref(self, -1);
 		return NULL;
@@ -1512,7 +1519,7 @@
 	ast_debug(1, "Bridge %s: calling %s technology start\n",
 		self->uniqueid, self->technology->name);
 	if (self->technology->start && self->technology->start(self)) {
-		ast_debug(1, "Bridge %s: failed to start %s technology\n",
+		ast_log(LOG_WARNING, "Bridge %s: failed to start bridge technology %s\n",
 			self->uniqueid, self->technology->name);
 		ao2_ref(self, -1);
 		return NULL;

Modified: team/dlee/ari-url-shuffle/main/bridging_basic.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/ari-url-shuffle/main/bridging_basic.c?view=diff&rev=392280&r1=392279&r2=392280
==============================================================================
--- team/dlee/ari-url-shuffle/main/bridging_basic.c (original)
+++ team/dlee/ari-url-shuffle/main/bridging_basic.c Wed Jun 19 17:54:15 2013
@@ -119,7 +119,6 @@
  * \param swap Bridge channel to swap places with if not NULL.
  *
  * \note On entry, self is already locked.
- * \note Stub because of nothing to do.
  *
  * \retval 0 on success
  * \retval -1 on failure

Modified: team/dlee/ari-url-shuffle/main/cel.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/ari-url-shuffle/main/cel.c?view=diff&rev=392280&r1=392279&r2=392280
==============================================================================
--- team/dlee/ari-url-shuffle/main/cel.c (original)
+++ team/dlee/ari-url-shuffle/main/cel.c Wed Jun 19 17:54:15 2013
@@ -634,6 +634,7 @@
 	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 @@
 	/* 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 @@
 	return tchan;
 }
 
-int ast_cel_linkedid_ref(const char *linkedid)
+static int cel_linkedid_ref(const char *linkedid)
 {
 	char *lid;
 
@@ -909,7 +910,7 @@
 	/* 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 @@
 		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);
 	}
 }

Modified: team/dlee/ari-url-shuffle/tests/test_substitution.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/ari-url-shuffle/tests/test_substitution.c?view=diff&rev=392280&r1=392279&r2=392280
==============================================================================
--- team/dlee/ari-url-shuffle/tests/test_substitution.c (original)
+++ team/dlee/ari-url-shuffle/tests/test_substitution.c Wed Jun 19 17:54:15 2013
@@ -286,7 +286,7 @@
 	pbx_builtin_setvar_helper(c, "list1", "ab&cd&ef");
 	TEST(test_expected_result(test, c, "${LISTFILTER(list1,&,cd)}", "ab&ef"));
 	TEST(test_expected_result(test, c, "${SHELL(printf '%d' 123)},${SHELL(printf '%d' 456)}", "123,456"));
-	TEST(test_expected_result(test, c, "${foo},${CDR(answer)},${SHELL(printf '%d' 456)}", "123,,456"));
+	TEST(test_expected_result(test, c, "${foo},${CDR(answer)},${SHELL(printf '%d' 456)}", "123,0.000000,456"));
 	TEST(test_expected_result(test, c, "${foo},${this_does_not_exist},${THIS_DOES_NOT_EXIST(either)}", "123,,"));
 #undef TEST
 




More information about the svn-commits mailing list