diff --git a/gst/dtmf/gstrtpdtmfsrc.c b/gst/dtmf/gstrtpdtmfsrc.c
index 738be59..fbca1d1 100644
--- a/gst/dtmf/gstrtpdtmfsrc.c
+++ b/gst/dtmf/gstrtpdtmfsrc.c
@@ -325,9 +325,18 @@ static void
 gst_rtp_dtmf_src_finalize (GObject * object)
 {
   GstRTPDTMFSrc *dtmfsrc;
+  GstRTPDTMFSrcEvent *event;

   dtmfsrc = GST_RTP_DTMF_SRC (object);
-
+  /* Flush queue */
+  while ((event = g_async_queue_try_pop((dtmfsrc->event_queue)))) {
+    if (event->payload) {
+      g_free(event->payload);
+      event->payload = NULL;
+    }
+    g_free(event) ;
+  }
+
   if (dtmfsrc->event_queue) {
     g_async_queue_unref (dtmfsrc->event_queue);
     dtmfsrc->event_queue = NULL;
