diff options
author | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-12-02 00:28:48 +0000 |
---|---|---|
committer | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-12-02 00:28:48 +0000 |
commit | d7f778d2f690dc519b71eb5dfd96ebdd85caee70 (patch) | |
tree | f31ebf514c1e0a9c0130a7cbff2cf8d92eac2ae1 /channels | |
parent | e0166f35d4e6e7709c54ae041a3b99bb83872891 (diff) |
protect agent_bridgedchannel() from segfaulting when there is no bridged channel (issue #5879)
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@7271 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rw-r--r-- | channels/chan_agent.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/channels/chan_agent.c b/channels/chan_agent.c index e2ef0f203..a754f8a8f 100644 --- a/channels/chan_agent.c +++ b/channels/chan_agent.c @@ -910,15 +910,16 @@ static int agent_ack_sleep( void *data ) static struct ast_channel *agent_bridgedchannel(struct ast_channel *chan, struct ast_channel *bridge) { - struct agent_pvt *p; + struct agent_pvt *p = bridge->tech_pvt; struct ast_channel *ret=NULL; - - p = bridge->tech_pvt; - if (chan == p->chan) - ret = bridge->_bridge; - else if (chan == bridge->_bridge) - ret = p->chan; + if (p) { + if (chan == p->chan) + ret = bridge->_bridge; + else if (chan == bridge->_bridge) + ret = p->chan; + } + 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; |