[svn-commits] murf: branch murf/bug11210 r103661 - /team/murf/bug11210/channels/chan_sip.c

SVN commits to the Digium repositories svn-commits at lists.digium.com
Wed Feb 13 14:22:42 CST 2008


Author: murf
Date: Wed Feb 13 14:22:41 2008
New Revision: 103661

URL: http://svn.digium.com/view/asterisk?view=rev&rev=103661
Log:
Time to throw a party. The relatedpeer field in the dialog was not being refcounted properly, thus leaving a small number of peers undestroyed. the refcounter utility reported nothing. Good Feeling...

Modified:
    team/murf/bug11210/channels/chan_sip.c

Modified: team/murf/bug11210/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/team/murf/bug11210/channels/chan_sip.c?view=diff&rev=103661&r1=103660&r2=103661
==============================================================================
--- team/murf/bug11210/channels/chan_sip.c (original)
+++ team/murf/bug11210/channels/chan_sip.c Wed Feb 13 14:22:41 2008
@@ -3107,9 +3107,6 @@
 static int sip_cancel_destroy(struct sip_pvt *p)
 {
 	int res = 0;
-	ast_log(LOG_NOTICE,"sip_cancel_destroy called for dialog %p, with autokillid=%d\n", 
-			p, p->autokillid);
-	
 	if (p->autokillid > -1) {
 		int res3;
 		
@@ -4363,6 +4360,8 @@
 	/* Remove link from peer to subscription of MWI */
 	if (p->relatedpeer && p->relatedpeer->mwipvt)
 		p->relatedpeer->mwipvt = dialog_unref(p->relatedpeer->mwipvt, "delete ->relatedpeer->mwipvt");
+	if (p->relatedpeer)
+		p->relatedpeer = unref_peer(p->relatedpeer,"unsetting a dialog relatedpeer field in sip_destroy");
 	
 	if (p->registry) {
 		if (p->registry->call == p)
@@ -19175,6 +19174,8 @@
 
 	AST_SCHED_DEL(sched, peer->pokeexpire);
 	
+	if (p->relatedpeer)
+		p->relatedpeer = unref_peer(p->relatedpeer,"unsetting the relatedpeer field in the dialog, before it is set to something else.");
 	p->relatedpeer = ref_peer(peer, "setting the relatedpeer field in the dialog");
 	ast_set_flag(&p->flags[0], SIP_OUTGOING);
 #ifdef VOCAL_DATA_HACK




More information about the svn-commits mailing list