summaryrefslogtreecommitdiff
path: root/main/bridge.c
diff options
context:
space:
mode:
Diffstat (limited to 'main/bridge.c')
-rw-r--r--main/bridge.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/main/bridge.c b/main/bridge.c
index b5c59514c..9d8d807f8 100644
--- a/main/bridge.c
+++ b/main/bridge.c
@@ -2187,7 +2187,7 @@ int bridge_do_move(struct ast_bridge *dst_bridge, struct ast_bridge_channel *bri
bridge_channel_moving(bridge_channel, orig_bridge, dst_bridge);
- if (bridge_channel_internal_push(bridge_channel)) {
+ if (bridge_channel_internal_push_full(bridge_channel, optimized)) {
/* Try to put the channel back into the original bridge. */
ast_bridge_features_remove(bridge_channel->features,
AST_BRIDGE_HOOK_REMOVE_ON_PULL);
@@ -2200,7 +2200,6 @@ int bridge_do_move(struct ast_bridge *dst_bridge, struct ast_bridge_channel *bri
AST_BRIDGE_HOOK_REMOVE_ON_PULL);
ast_bridge_channel_leave_bridge(bridge_channel,
BRIDGE_CHANNEL_STATE_END_NO_DISSOLVE, bridge_channel->bridge->cause);
- bridge_channel_settle_owed_events(orig_bridge, bridge_channel);
}
} else {
ast_bridge_channel_leave_bridge(bridge_channel,
@@ -2208,7 +2207,7 @@ int bridge_do_move(struct ast_bridge *dst_bridge, struct ast_bridge_channel *bri
bridge_channel_settle_owed_events(orig_bridge, bridge_channel);
}
res = -1;
- } else {
+ } else if (!optimized) {
bridge_channel_settle_owed_events(orig_bridge, bridge_channel);
}