aboutsummaryrefslogtreecommitdiffstats
path: root/apps/app_queue.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/app_queue.c')
-rw-r--r--apps/app_queue.c27
1 files changed, 14 insertions, 13 deletions
diff --git a/apps/app_queue.c b/apps/app_queue.c
index 66c8ec7cd..4da2eac72 100644
--- a/apps/app_queue.c
+++ b/apps/app_queue.c
@@ -3583,19 +3583,6 @@ static int try_calling(struct queue_ent *qe, const char *options, char *announce
}
- if ((queue_end_bridge = ao2_alloc(sizeof(*queue_end_bridge), NULL))) {
- queue_end_bridge->q = qe->parent;
- queue_end_bridge->chan = qe->chan;
- bridge_config.end_bridge_callback = end_bridge_callback;
- bridge_config.end_bridge_callback_data = queue_end_bridge;
- bridge_config.end_bridge_callback_data_fixup = end_bridge_callback_data_fixup;
- /* Since queue_end_bridge can survive beyond the life of this call to Queue, we need
- * to make sure to increase the refcount of this queue so it cannot be freed until we
- * are done with it. We remove this reference in end_bridge_callback.
- */
- queue_ref(qe->parent);
- }
-
/* if the calling channel has the ANSWERED_ELSEWHERE flag set, make sure this is inherited.
(this is mainly to support chan_local)
*/
@@ -4147,6 +4134,20 @@ static int try_calling(struct queue_ent *qe, const char *options, char *announce
qe->parent->eventwhencalled == QUEUE_EVENT_VARIABLES ? vars2manager(qe->chan, vars, sizeof(vars)) : "");
ast_copy_string(oldcontext, qe->chan->context, sizeof(oldcontext));
ast_copy_string(oldexten, qe->chan->exten, sizeof(oldexten));
+
+ if ((queue_end_bridge = ao2_alloc(sizeof(*queue_end_bridge), NULL))) {
+ queue_end_bridge->q = qe->parent;
+ queue_end_bridge->chan = qe->chan;
+ bridge_config.end_bridge_callback = end_bridge_callback;
+ bridge_config.end_bridge_callback_data = queue_end_bridge;
+ bridge_config.end_bridge_callback_data_fixup = end_bridge_callback_data_fixup;
+ /* Since queue_end_bridge can survive beyond the life of this call to Queue, we need
+ * to make sure to increase the refcount of this queue so it cannot be freed until we
+ * are done with it. We remove this reference in end_bridge_callback.
+ */
+ queue_ref(qe->parent);
+ }
+
time(&callstart);
transfer_ds = setup_transfer_datastore(qe, member, callstart, callcompletedinsl);
bridge = ast_bridge_call(qe->chan,peer, &bridge_config);