diff options
author | Mark Michelson <mmichelson@digium.com> | 2015-08-27 14:53:42 -0500 |
---|---|---|
committer | Gerrit Code Review <gerrit2@gerrit.digium.api> | 2015-08-27 14:53:42 -0500 |
commit | fdf096fff125512b9e24ff53557e769d3b165322 (patch) | |
tree | 996a4d710d3f4b483a9dc76156bb3ce467dfdcbc | |
parent | 6862c2a167f4ed2cb8511bb1ae94a13582afa25b (diff) | |
parent | f1cd6366588c66dce5be66541ceb7f828fde3773 (diff) |
Merge "Chaos: make hangup NULL tolerant" into 13
-rw-r--r-- | channels/chan_pjsip.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/channels/chan_pjsip.c b/channels/chan_pjsip.c index bb79e84a5..49995a2f8 100644 --- a/channels/chan_pjsip.c +++ b/channels/chan_pjsip.c @@ -1762,9 +1762,17 @@ static int hangup(void *data) static int chan_pjsip_hangup(struct ast_channel *ast) { struct ast_sip_channel_pvt *channel = ast_channel_tech_pvt(ast); - struct chan_pjsip_pvt *pvt = channel->pvt; - int cause = hangup_cause2sip(ast_channel_hangupcause(channel->session->channel)); - struct hangup_data *h_data = hangup_data_alloc(cause, ast); + struct chan_pjsip_pvt *pvt; + int cause; + struct hangup_data *h_data; + + if (!channel || !channel->session) { + return -1; + } + + pvt = channel->pvt; + cause = hangup_cause2sip(ast_channel_hangupcause(channel->session->channel)); + h_data = hangup_data_alloc(cause, ast); if (!h_data) { goto failure; |