diff options
author | Dwayne M. Hubbard <dwayne.hubbard@gmail.com> | 2007-10-01 21:31:16 +0000 |
---|---|---|
committer | Dwayne M. Hubbard <dwayne.hubbard@gmail.com> | 2007-10-01 21:31:16 +0000 |
commit | 71a0672560db6b117806a4f8afb5f3ff3111f206 (patch) | |
tree | 43e15f9601c5a8f7be3dac725f53b0abc215ab2f /channels/chan_agent.c | |
parent | 9334e72e76656b7f357c37a1a67c02d87ca139fc (diff) |
Merged revisions 84274 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r84274 | dhubbard | 2007-10-01 16:25:37 -0500 (Mon, 01 Oct 2007) | 1 line
moved get_base_channel() code from action_redirect to ast_channel_masquerade() for issue 7706 and BE-160
........
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@84275 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels/chan_agent.c')
-rw-r--r-- | channels/chan_agent.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/channels/chan_agent.c b/channels/chan_agent.c index 438134fbb..f3fdd19f0 100644 --- a/channels/chan_agent.c +++ b/channels/chan_agent.c @@ -702,17 +702,20 @@ static void set_agentbycallerid(const char *callerid, const char *agent) pbx_builtin_setvar_helper(NULL, buf, agent); } +/*! \brief return the channel or base channel if one exists. This function assumes the channel it is called on is already locked */ struct ast_channel* agent_get_base_channel(struct ast_channel *chan) { struct agent_pvt *p = NULL; - struct ast_channel *base = NULL; - + struct ast_channel *base = chan; + + /* chan is locked by the calling function */ if (!chan || !chan->tech_pvt) { ast_log(LOG_ERROR, "whoa, you need a channel (0x%ld) with a tech_pvt (0x%ld) to get a base channel.\n", (long)chan, (chan)?(long)chan->tech_pvt:(long)NULL); - } else { - p = chan->tech_pvt; - base = p->chan; + return NULL; } + p = chan->tech_pvt; + if (p->chan) + base = p->chan; return base; } |