[asterisk-commits] mmichelson: branch mmichelson/atxfer_features r393828 - in /team/mmichelson/a...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Mon Jul 8 13:24:46 CDT 2013


Author: mmichelson
Date: Mon Jul  8 13:24:43 2013
New Revision: 393828

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=393828
Log:
Address review feedback:

* Change bridging_private.h to bridging_internal.h
* Remove copious red blobs
* Check for existing bridge merge inhibition prior to performing attended transfer.


Added:
    team/mmichelson/atxfer_features/include/asterisk/bridging_internal.h
      - copied unchanged from r393824, team/mmichelson/atxfer_features/include/asterisk/bridging_private.h
Removed:
    team/mmichelson/atxfer_features/include/asterisk/bridging_private.h
Modified:
    team/mmichelson/atxfer_features/main/bridging.c
    team/mmichelson/atxfer_features/main/bridging_basic.c
    team/mmichelson/atxfer_features/main/stasis_bridging.c

Modified: team/mmichelson/atxfer_features/main/bridging.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/atxfer_features/main/bridging.c?view=diff&rev=393828&r1=393827&r2=393828
==============================================================================
--- team/mmichelson/atxfer_features/main/bridging.c (original)
+++ team/mmichelson/atxfer_features/main/bridging.c Mon Jul  8 13:24:43 2013
@@ -63,7 +63,7 @@
 #include "asterisk/core_local.h"
 #include "asterisk/core_unreal.h"
 #include "asterisk/features_config.h"
-#include "asterisk/bridging_private.h"
+#include "asterisk/bridging_internal.h"
 
 /*! All bridges container. */
 static struct ao2_container *bridges;

Modified: team/mmichelson/atxfer_features/main/bridging_basic.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/atxfer_features/main/bridging_basic.c?view=diff&rev=393828&r1=393827&r2=393828
==============================================================================
--- team/mmichelson/atxfer_features/main/bridging_basic.c (original)
+++ team/mmichelson/atxfer_features/main/bridging_basic.c Mon Jul  8 13:24:43 2013
@@ -41,7 +41,7 @@
 #include "asterisk/pbx.h"
 #include "asterisk/file.h"
 #include "asterisk/app.h"
-#include "asterisk/bridging_private.h"
+#include "asterisk/bridging_internal.h"
 #include "asterisk/dial.h"
 #include "asterisk/stasis_bridging.h"
 
@@ -49,7 +49,7 @@
 			| AST_BRIDGE_FLAG_SMART
 
 #define TRANSFER_FLAGS AST_BRIDGE_FLAG_SMART
-#define TRANSFERER_ROLE_NAME "transferer" 
+#define TRANSFERER_ROLE_NAME "transferer"
 
 struct attended_transfer_properties;
 
@@ -235,7 +235,7 @@
 	 * The attended transfer state machine begins in this superstate. The
 	 * goal of this state is for a transferer channel to facilitate a
 	 * transfer from a transferee to a transfer target.
-	 * 
+	 *
 	 * There are two bridges used in this superstate. The transferee bridge is
 	 * the bridge that the transferer and transferee channels originally
 	 * communicate in, and the target bridge is the bridge where the transfer
@@ -546,7 +546,7 @@
 	 * this state is entered when atxferdropcall is set to 'no'. This is the
 	 * initial state of the Recall superstate, so state operations mainly involve
 	 * moving to the Recall superstate. This means that the transfer target, that
-	 * is currently ringing is now known as the recall target. 
+	 * is currently ringing is now known as the recall target.
 	 *
 	 * Superstate: Recall
 	 *
@@ -912,7 +912,7 @@
 	if (!props) {
 		return NULL;
 	}
-	
+
 	ast_mutex_init(&props->lock);
 	ast_cond_init(&props->cond, NULL);
 
@@ -1110,7 +1110,7 @@
 		ast_channel_lock(chan);
 		bridge_channel = ast_channel_get_bridge_channel(chan);
 		ast_channel_unlock(chan);
-		
+
 		ast_assert(bridge_channel != NULL);
 
 		ast_bridge_channel_write_hold(bridge_channel, NULL);
@@ -1127,7 +1127,7 @@
 	ast_channel_lock(chan);
 	bridge_channel = ast_channel_get_bridge_channel(chan);
 	ast_channel_unlock(chan);
-	
+
 	ast_assert(bridge_channel != NULL);
 
 	ast_bridge_channel_write_unhold(bridge_channel);
@@ -1143,7 +1143,7 @@
 	ast_channel_lock(chan);
 	bridge_channel = ast_channel_get_bridge_channel(chan);
 	ast_channel_unlock(chan);
-	
+
 	ast_assert(bridge_channel != NULL);
 
 	ast_bridge_channel_write_control_data(bridge_channel, AST_CONTROL_RINGING, NULL, 0);
@@ -1832,7 +1832,7 @@
 	struct ast_format fmt;
 	char destination[AST_MAX_EXTENSION + AST_MAX_CONTEXT + 2];
 	int cause;
-	
+
 	if (!cap) {
 		return -1;
 	}
@@ -2074,22 +2074,22 @@
 	swap_dtmf = ast_channel_get_role_option(bridge_channel->chan, TRANSFERER_ROLE_NAME, "swap");
 
 	if (!ast_strlen_zero(abort_dtmf) && ast_bridge_dtmf_hook(bridge_channel->features,
-				abort_dtmf, atxfer_abort, personality->pvt, NULL, 
+				abort_dtmf, atxfer_abort, personality->pvt, NULL,
 				AST_BRIDGE_HOOK_REMOVE_ON_PERSONALITY_CHANGE | AST_BRIDGE_HOOK_REMOVE_ON_PULL)) {
 		return -1;
 	}
 	if (!ast_strlen_zero(complete_dtmf) && ast_bridge_dtmf_hook(bridge_channel->features,
-				complete_dtmf, atxfer_complete, personality->pvt, NULL, 
+				complete_dtmf, atxfer_complete, personality->pvt, NULL,
 				AST_BRIDGE_HOOK_REMOVE_ON_PERSONALITY_CHANGE | AST_BRIDGE_HOOK_REMOVE_ON_PULL)) {
 		return -1;
 	}
 	if (!ast_strlen_zero(threeway_dtmf) && ast_bridge_dtmf_hook(bridge_channel->features,
-				threeway_dtmf, atxfer_threeway, personality->pvt, NULL, 
+				threeway_dtmf, atxfer_threeway, personality->pvt, NULL,
 				AST_BRIDGE_HOOK_REMOVE_ON_PERSONALITY_CHANGE | AST_BRIDGE_HOOK_REMOVE_ON_PULL)) {
 		return -1;
 	}
 	if (!ast_strlen_zero(swap_dtmf) && ast_bridge_dtmf_hook(bridge_channel->features,
-				swap_dtmf, atxfer_swap, personality->pvt, NULL, 
+				swap_dtmf, atxfer_swap, personality->pvt, NULL,
 				AST_BRIDGE_HOOK_REMOVE_ON_PERSONALITY_CHANGE | AST_BRIDGE_HOOK_REMOVE_ON_PULL)) {
 		return -1;
 	}
@@ -2263,7 +2263,7 @@
 		stimulus = wait_for_stimulus(props);
 
 		ast_debug(1, "Received stimulus %s on attended transfer %p\n", stimulus_strs[stimulus], props);
-		
+
 		ast_assert(state_properties[props->state].exit != NULL);
 
 		props->state = state_properties[props->state].exit(props, stimulus);
@@ -2436,6 +2436,11 @@
 	char destination[AST_MAX_EXTENSION + AST_MAX_CONTEXT + 1];
 	pthread_t thread;
 
+	if (bridge->inhibit_merge) {
+		ast_log(LOG_ERROR, "Unable to perform attended transfer since bridge '%s' does not permit merging.\n", bridge->uniqueid);
+		return 0;
+	}
+
 	props = attended_transfer_properties_alloc(bridge, bridge_channel->chan,
 			attended_transfer ? attended_transfer->context : NULL);
 
@@ -2721,7 +2726,7 @@
 	personality_normal_v_table = ast_bridge_base_v_table;
 	personality_normal_v_table.name = "normal";
 	personality_normal_v_table.push = bridge_personality_normal_push;
-	
+
 	personality_atxfer_v_table = ast_bridge_base_v_table;
 	personality_atxfer_v_table.name = "attended transfer";
 	personality_atxfer_v_table.push = bridge_personality_atxfer_push;

Modified: team/mmichelson/atxfer_features/main/stasis_bridging.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/atxfer_features/main/stasis_bridging.c?view=diff&rev=393828&r1=393827&r2=393828
==============================================================================
--- team/mmichelson/atxfer_features/main/stasis_bridging.c (original)
+++ team/mmichelson/atxfer_features/main/stasis_bridging.c Mon Jul  8 13:24:43 2013
@@ -335,7 +335,7 @@
 					<note><para>This header is only present when <replaceable>DestType</replaceable> is <literal>Link</literal></para></note>
 				</parameter>
 				<parameter name="DestTransfererChannel">
-					<para>The surviving transferer channel when a transfer results in a threeway call</para>
+					<para>The name of the surviving transferer channel when a transfer results in a threeway call</para>
 					<note><para>This header is only present when <replaceable>DestType</replaceable> is <literal>Threeway</literal></para></note>
 				</parameter>
 			</syntax>




More information about the asterisk-commits mailing list