From cf4825233dba794494eba66745562f97a3eb476f Mon Sep 17 00:00:00 2001
From: Mark Spencer <markster@digium.com>
Date: Fri, 6 Feb 2004 18:11:13 +0000
Subject: [PATCH] Don't free private structure until iax2_hangup is actually
 called

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@2136 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 channels/chan_iax2.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c
index 8ffd120377..e24f618be7 100755
--- a/channels/chan_iax2.c
+++ b/channels/chan_iax2.c
@@ -1038,9 +1038,11 @@ retry:
 			goto retry;
 		}
 	}
-	iaxs[callno] = NULL;
+	if (!owner)
+		iaxs[callno] = NULL;
 	if (pvt) {
-		pvt->owner = NULL;
+		if (!owner)
+			pvt->owner = NULL;
 		/* No more pings or lagrq's */
 		if (pvt->pingid > -1)
 			ast_sched_del(sched, pvt->pingid);
@@ -1063,7 +1065,6 @@ retry:
 
 		if (owner) {
 			/* If there's an owner, prod it to give up */
-			owner->pvt->pvt = NULL;
 			owner->_softhangup |= AST_SOFTHANGUP_DEV;
 			ast_queue_hangup(owner, 0);
 		}
@@ -1076,7 +1077,8 @@ retry:
 		if (pvt->reg) {
 			pvt->reg->callno = 0;
 		}
-		free(pvt);
+		if (!owner)
+			free(pvt);
 	}
 	if (owner) {
 		ast_mutex_unlock(&owner->lock);
-- 
GitLab