[asterisk-commits] mmichelson: branch mmichelson/atxfer_features r393428 - /team/mmichelson/atxf...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Tue Jul 2 10:55:49 CDT 2013
Author: mmichelson
Date: Tue Jul 2 10:55:48 2013
New Revision: 393428
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=393428
Log:
Make sure the transferer has all his features if he gets recalled.
Modified:
team/mmichelson/atxfer_features/main/bridging_basic.c
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=393428&r1=393427&r2=393428
==============================================================================
--- team/mmichelson/atxfer_features/main/bridging_basic.c (original)
+++ team/mmichelson/atxfer_features/main/bridging_basic.c Tue Jul 2 10:55:48 2013
@@ -941,6 +941,8 @@
char transferer_addr[AST_CHANNEL_NAME];
/*! Dial structure used when recalling transferer channel */
struct ast_dial *dial;
+ /*! The bridging features the transferer has available */
+ struct ast_flags transferer_features;
};
static void attended_transfer_properties_destructor(void *obj)
@@ -968,6 +970,7 @@
char *addr;
char *serial;
RAII_VAR(struct ast_features_xfer_config *, xfer_cfg, NULL, ao2_cleanup);
+ struct ast_flags *transferer_features;
props = ao2_alloc(sizeof(*props), attended_transfer_properties_destructor);
if (!props) {
@@ -985,6 +988,10 @@
if (!xfer_cfg) {
ao2_ref(props, -1);
return NULL;
+ }
+ transferer_features = ast_bridge_features_ds_get(props->transferer);
+ if (transferer_features) {
+ props->transferer_features = *transferer_features;
}
props->atxferdropcall = xfer_cfg->atxferdropcall;
props->atxfercallbackretries = xfer_cfg->atxfercallbackretries;
@@ -1637,6 +1644,11 @@
}
return TRANSFER_RETRANSFER;
case STIMULUS_RECALL_TARGET_ANSWER:
+ /* Setting this datastore up will allow the transferer to have all of his
+ * call features set up automatically when the bridge changes back to a
+ * normal personality
+ */
+ ast_bridge_features_ds_set(props->recall_target, &props->transferer_features);
ast_bridge_impart(props->transferee_bridge, props->recall_target, NULL, NULL, 1);
return TRANSFER_RESUME;
case STIMULUS_NONE:
More information about the asterisk-commits
mailing list