When removing all packets from a dialog we also need to free the data if present.
authorJoshua Colp <jcolp@digium.com>
Sat, 30 May 2009 02:31:48 +0000 (02:31 +0000)
committerJoshua Colp <jcolp@digium.com>
Sat, 30 May 2009 02:31:48 +0000 (02:31 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@198248 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_sip.c

index fe6fd07..fe362b8 100644 (file)
@@ -3079,6 +3079,9 @@ static void *dialog_unlink_all(struct sip_pvt *dialog, int lockowner, int lockdi
                dialog->packets = dialog->packets->next;
                AST_SCHED_DEL(sched, cp->retransid);
                dialog_unref(cp->owner, "remove all current packets in this dialog, and the pointer to the dialog too as part of __sip_destroy");
+               if (cp->data) {
+                       ast_free(cp->data);
+               }
                ast_free(cp);
        }