diff --git a/channels/chan_agent.c b/channels/chan_agent.c
index 1762f1391d72d3b7150efad75871a50317ba3106..5a672206021c36fd46962eabbf66d4df55a69136 100755
--- a/channels/chan_agent.c
+++ b/channels/chan_agent.c
@@ -552,6 +552,8 @@ static int agent_call(struct ast_channel *ast, char *dest, int timeout)
 			if (recordagentcalls)
 				agent_start_monitoring(ast,0);
 			p->acknowledged = 1;
+			if (p->chan)
+				p->chan->_bridge = ast;
 		}
 		res = 0;
 	}
@@ -759,13 +761,16 @@ static struct ast_channel *agent_bridgedchannel(struct ast_channel *chan, struct
 {
 	struct agent_pvt *p;
 	struct ast_channel *ret=NULL;
+	
 
 	p = bridge->pvt->pvt;
 	if (chan == p->chan)
 		ret = bridge->_bridge;
 	else if (chan == bridge->_bridge)
 		ret = p->chan;
-	return NULL;
+	if (option_debug)
+		ast_log(LOG_DEBUG, "Asked for bridged channel on '%s'/'%s', returning '%s'\n", chan->name, bridge->name, ret ? ret->name : "<none>");
+	return ret;
 }
 
 /*--- agent_new: Create new agent channel ---*/
diff --git a/cli.c b/cli.c
index 70e38095daf0cc753a130d1e7972fa9a316d5f0d..fdd87a3b0f83049d824769ec11a9d7e9630fd1be 100755
--- a/cli.c
+++ b/cli.c
@@ -669,6 +669,8 @@ static int handle_showchan(int fd, int argc, char *argv[])
 	"     Frames out: %d%s\n"
 	" Time to Hangup: %ld\n"
 	"   Elapsed Time: %s\n"
+	"  Direct Bridge: %s\n"
+	"Indirect Bridge: %s\n"
 	" --   PBX   --\n"
 	"        Context: %s\n"
 	"      Extension: %s\n"
@@ -684,7 +686,7 @@ static int handle_showchan(int fd, int argc, char *argv[])
 	(c->cid.cid_dnid ? c->cid.cid_dnid : "(N/A)" ), ast_state2str(c->_state), c->_state, c->rings, c->nativeformats, c->writeformat, c->readformat,
 	c->fds[0], c->fin & 0x7fffffff, (c->fin & 0x80000000) ? " (DEBUGGED)" : "",
 	c->fout & 0x7fffffff, (c->fout & 0x80000000) ? " (DEBUGGED)" : "", (long)c->whentohangup,
-	cdrtime,
+	cdrtime, c->_bridge ? c->_bridge->name : "<none>", ast_bridged_channel(c) ? ast_bridged_channel(c)->name : "<none>", 
 	c->context, c->exten, c->priority, c->callgroup, c->pickupgroup, ( c->appl ? c->appl : "(N/A)" ),
 	( c-> data ? (!ast_strlen_zero(c->data) ? c->data : "(Empty)") : "(None)"),
 	(ast_test_flag(c, AST_FLAG_BLOCKING) ? c->blockproc : "(Not Blocking)"));