From 0c7f4cfb85d10874c9cd6b7f855a033cd0e19cc8 Mon Sep 17 00:00:00 2001
From: Jeff Peeler <jpeeler@digium.com>
Date: Tue, 6 Oct 2009 19:24:59 +0000
Subject: [PATCH] Fix crash during destruction of second channel when variable
 set with setvar.

The setvar line in chan_dahdi.conf is shared among all the channels, so make
sure to only free the resources only when the last channel is destroyed.

(closes issue #15899)
Reported by: tzafrir



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@222298 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 channels/chan_dahdi.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c
index 8a43bacad1..0af7d7d4be 100644
--- a/channels/chan_dahdi.c
+++ b/channels/chan_dahdi.c
@@ -4881,8 +4881,9 @@ static void destroy_dahdi_pvt(struct dahdi_pvt *pvt)
 		ast_smdi_interface_unref(p->smdi_iface);
 	if (p->mwi_event_sub)
 		ast_event_unsubscribe(p->mwi_event_sub);
-	if (p->vars)
+	if (p->vars && iflist && !iflist->next) {
 		ast_variables_destroy(p->vars);
+	}
 	ast_mutex_destroy(&p->lock);
 	dahdi_close_sub(p, SUB_REAL);
 	if (p->owner)
-- 
GitLab