summaryrefslogtreecommitdiff
path: root/main/bridge_channel.c
diff options
context:
space:
mode:
Diffstat (limited to 'main/bridge_channel.c')
-rw-r--r--main/bridge_channel.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/main/bridge_channel.c b/main/bridge_channel.c
index 3aac5eb25..eb4b9ad0e 100644
--- a/main/bridge_channel.c
+++ b/main/bridge_channel.c
@@ -56,6 +56,7 @@
#include "asterisk/test.h"
#include "asterisk/sem.h"
#include "asterisk/stream.h"
+#include "asterisk/message.h"
/*!
* \brief Used to queue an action frame onto a bridge channel and write an action frame into a bridge.
@@ -1055,6 +1056,20 @@ int ast_bridge_channel_queue_frame(struct ast_bridge_channel *bridge_channel, st
return 0;
}
+ if (DEBUG_ATLEAST(1)) {
+ if (fr->frametype == AST_FRAME_TEXT) {
+ ast_log(LOG_DEBUG, "Queuing TEXT frame to '%s': %*.s\n", ast_channel_name(bridge_channel->chan),
+ fr->datalen, (char *)fr->data.ptr);
+ } else if (fr->frametype == AST_FRAME_TEXT_DATA) {
+ struct ast_msg_data *msg = fr->data.ptr;
+ ast_log(LOG_DEBUG, "Queueing TEXT_DATA frame from '%s' to '%s:%s': %s\n",
+ ast_msg_data_get_attribute(msg, AST_MSG_DATA_ATTR_FROM),
+ ast_msg_data_get_attribute(msg, AST_MSG_DATA_ATTR_TO),
+ ast_channel_name(bridge_channel->chan),
+ ast_msg_data_get_attribute(msg, AST_MSG_DATA_ATTR_BODY));
+ }
+ }
+
AST_LIST_INSERT_TAIL(&bridge_channel->wr_queue, dup, frame_list);
if (ast_alertpipe_write(bridge_channel->alert_pipe)) {
ast_log(LOG_ERROR, "We couldn't write alert pipe for %p(%s)... something is VERY wrong\n",
@@ -2349,6 +2364,7 @@ static void bridge_channel_handle_write(struct ast_bridge_channel *bridge_channe
struct ast_frame *fr;
struct sync_payload *sync_payload;
int num;
+ struct ast_msg_data *msg;
ast_bridge_channel_lock(bridge_channel);
@@ -2381,6 +2397,7 @@ static void bridge_channel_handle_write(struct ast_bridge_channel *bridge_channe
AST_LIST_TRAVERSE_SAFE_END;
ast_bridge_channel_unlock(bridge_channel);
+
if (!fr) {
/*
* Wait some to reduce CPU usage from a tight loop
@@ -2404,6 +2421,20 @@ static void bridge_channel_handle_write(struct ast_bridge_channel *bridge_channe
break;
case AST_FRAME_NULL:
break;
+ case AST_FRAME_TEXT:
+ ast_debug(1, "Sending TEXT frame to '%s': %*.s\n",
+ ast_channel_name(bridge_channel->chan), fr->datalen, (char *)fr->data.ptr);
+ ast_sendtext(bridge_channel->chan, fr->data.ptr);
+ break;
+ case AST_FRAME_TEXT_DATA:
+ msg = (struct ast_msg_data *)fr->data.ptr;
+ ast_debug(1, "Sending TEXT_DATA frame from '%s' to '%s:%s': %s\n",
+ ast_msg_data_get_attribute(msg, AST_MSG_DATA_ATTR_FROM),
+ ast_msg_data_get_attribute(msg, AST_MSG_DATA_ATTR_TO),
+ ast_channel_name(bridge_channel->chan),
+ ast_msg_data_get_attribute(msg, AST_MSG_DATA_ATTR_BODY));
+ ast_sendtext_data(bridge_channel->chan, msg);
+ break;
default:
/* Assume that there is no mapped stream for this */
num = -1;