[svn-commits] rizzo: branch rizzo/astobj2 r47422 - /team/rizzo/astobj2/channels/chan_sip.c

svn-commits at lists.digium.com svn-commits at lists.digium.com
Fri Nov 10 07:58:38 MST 2006


Author: rizzo
Date: Fri Nov 10 08:58:37 2006
New Revision: 47422

URL: http://svn.digium.com/view/asterisk?view=rev&rev=47422
Log:
properly destruct sip_refer


Modified:
    team/rizzo/astobj2/channels/chan_sip.c

Modified: team/rizzo/astobj2/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/team/rizzo/astobj2/channels/chan_sip.c?view=diff&rev=47422&r1=47421&r2=47422
==============================================================================
--- team/rizzo/astobj2/channels/chan_sip.c (original)
+++ team/rizzo/astobj2/channels/chan_sip.c Fri Nov 10 08:58:37 2006
@@ -82,7 +82,7 @@
  * the sip_hangup() function
  */
 
-// #define	USE_AO2		// enable to use astobj2
+#define	USE_AO2		// enable to use astobj2
 
 #include "asterisk.h"
 
@@ -1378,6 +1378,7 @@
 static int sip_send_mwi_to_peer(struct sip_peer *peer);
 static int sip_addrcmp(char *name, struct sockaddr_in *sin);	/* Support for peer matching */
 static int sip_refer_allocate(struct sip_pvt *p);
+static void sip_refer_destroy(struct sip_pvt *p);
 static void ast_quiet_chan(struct ast_channel *chan);
 static int attempt_transfer(struct sip_dual *transferer, struct sip_dual *target);
 
@@ -3098,8 +3099,7 @@
 		ast_rtp_destroy(p->vrtp);
 	if (p->udptl)
 		ast_udptl_destroy(p->udptl);
-	if (p->refer)
-		free(p->refer);
+	sip_refer_destroy(p);
 	if (p->route) {
 		free_old_route(p->route);
 		p->route = NULL;
@@ -7502,6 +7502,16 @@
 {
 	p->refer = ast_calloc(1, sizeof(struct sip_refer)); 
 	return p->refer ? 1 : 0;
+}
+
+static void sip_refer_destroy(struct sip_pvt *p)
+{
+	if (!p->refer)
+		return;
+	if (p->refer->refer_pvt)
+		p->refer->refer_pvt = sip_destroy(p->refer->refer_pvt);
+	free(p->refer);
+	p->refer = NULL;
 }
 
 /*! \brief Transmit SIP REFER message (initiated by the transfer() dialplan application



More information about the svn-commits mailing list