diff options
Diffstat (limited to 'main/bridge.c')
-rw-r--r-- | main/bridge.c | 5 |
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); } |