From e510fa15147443e5f088183a4262c522bb77f95a Mon Sep 17 00:00:00 2001
From: Mark Michelson <mmichelson@digium.com>
Date: Tue, 20 Aug 2013 16:23:11 +0000
Subject: [PATCH] Fix refcounting of sip_pvt in test_sip_rtpqos test and unlink
 it from the list of pvts.

(closes issue ASTERISK-22248)
reported by Corey Farrell
patches:
	test_sip_rtpqos.patch uploaded by Corey Farrell (license #5909)
........

Merged revisions 397112 from http://svn.asterisk.org/svn/asterisk/branches/1.8


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/11@397133 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 channels/chan_sip.c               | 1 +
 channels/sip/dialplan_functions.c | 5 +++--
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 3864639d20..fb0a0d3c42 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -217,6 +217,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 #include <regex.h>
 #include <inttypes.h>
 
+#define REF_DEBUG 1
 #include "asterisk/network.h"
 #include "asterisk/paths.h"	/* need ast_config_AST_SYSTEM_NAME */
 /*
diff --git a/channels/sip/dialplan_functions.c b/channels/sip/dialplan_functions.c
index 2f6b160f43..3500a423a6 100644
--- a/channels/sip/dialplan_functions.c
+++ b/channels/sip/dialplan_functions.c
@@ -353,7 +353,7 @@ AST_TEST_DEFINE(test_sip_rtpqos_1)
 		goto done;
 	}
 	ast_channel_tech_set(chan, &sip_tech);
-	ast_channel_tech_pvt_set(chan, p);
+	ast_channel_tech_pvt_set(chan, dialog_ref(p, "Give the owner channel a reference to the dialog"));
 	p->owner = chan;
 
 	varstr = ast_str_create(16);
@@ -397,8 +397,9 @@ done:
 	ast_free(varstr);
 	ast_free(buffer);
 
-	/* This unref will take care of destroying the channel, RTP instance, and SIP pvt */
+	/* This unlink and unref will take care of destroying the channel, RTP instance, and SIP pvt */
 	if (p) {
+		dialog_unlink_all(p);
 		dialog_unref(p, "Destroy test object");
 	}
 	ast_rtp_engine_unregister(&test_engine);
-- 
GitLab