summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorRichard Mudgett <rmudgett@digium.com>2013-06-21 22:39:27 +0000
committerRichard Mudgett <rmudgett@digium.com>2013-06-21 22:39:27 +0000
commit1267c91315f6850483022b4535beadbc0069b22e (patch)
tree17236bfa946838220112a3d80fb86913f0b70aa8 /main
parentc14cdede125902fb5c59c92745ae10d6c1e57d33 (diff)
Extract a useful routine from the softmix bridge technology.
* Extract a useful routine from the softmix bridge technology for other technologies. Make other technologies use it if they can. * Made native and 1-1 bridges write to all parties if the bridge channel writing the frame into the bridge is NULL. Softmix will also do the same for frame types that make sense. * Tweak the bridge write routine return value meaning and adjust the bridge technologies to match. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@392514 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main')
-rw-r--r--main/bridging.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/main/bridging.c b/main/bridging.c
index 98a72f379..0530424ff 100644
--- a/main/bridging.c
+++ b/main/bridging.c
@@ -421,6 +421,22 @@ int ast_bridge_channel_queue_control_data(struct ast_bridge_channel *bridge_chan
return ast_bridge_channel_queue_frame(bridge_channel, &frame);
}
+int ast_bridge_queue_everyone_else(struct ast_bridge *bridge, struct ast_bridge_channel *bridge_channel, struct ast_frame *frame)
+{
+ struct ast_bridge_channel *cur;
+ int not_written = -1;
+
+ AST_LIST_TRAVERSE(&bridge->channels, cur, entry) {
+ if (cur == bridge_channel) {
+ continue;
+ }
+ if (!ast_bridge_channel_queue_frame(cur, frame)) {
+ not_written = 0;
+ }
+ }
+ return not_written;
+}
+
void ast_bridge_channel_restore_formats(struct ast_bridge_channel *bridge_channel)
{
/* Restore original formats of the channel as they came in */