diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 10fa7462fc..c21846f25f 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -3150,6 +3150,7 @@ static int sip_hangup(struct ast_channel *ast) struct sip_pvt *p = ast->tech_pvt; int needcancel = FALSE; struct ast_flags locflags = {0}; + struct ast_channel oldowner = ast; if (!p) { ast_log(LOG_DEBUG, "Asked to hangup channel that was not connected\n"); @@ -3260,10 +3261,10 @@ static int sip_hangup(struct ast_channel *ast) if (p->vrtp) append_history(p, "RTCPvideo", "Quality:%s", videoqos); } - if (p->rtp && p->owner) - pbx_builtin_setvar_helper(p->owner, "RTPAUDIOQOS", audioqos); - if (p->vrtp && p->owner) - pbx_builtin_setvar_helper(p->owner, "RTPVIDEOQOS", videoqos); + if (p->rtp && oldowner) + pbx_builtin_setvar_helper(oldowner, "RTPAUDIOQOS", audioqos); + if (p->vrtp && oldowner) + pbx_builtin_setvar_helper(oldowner, "RTPVIDEOQOS", videoqos); } else { /* Note we will need a BYE when this all settles out but we can't send one while we have "INVITE" outstanding. */