Memleak: free the XMPP-Eventqueue on shutdown
[citadel.git] / citadel / modules / xmpp / xmpp_queue.c
index 811f2645230ea37b3f1af3359aa321b362c0c0fd..986cb2570b5e10b9af61dfce7146153c0c092bfc 100644 (file)
@@ -146,3 +146,24 @@ void xmpp_process_events(void) {
 
        XMPP->last_event_processed = highest_event;
 }
+
+
+void xmpp_cleanup_events(void)
+{
+        struct xmpp_event *ptr, *ptr2;
+        begin_critical_section(S_XMPP_QUEUE);
+       ptr = xmpp_queue;
+       xmpp_queue = NULL;
+       while (ptr != NULL) {
+#if 0
+// TODO: why do we have an invalid pointer here?
+               if (ptr->event_jid != NULL)
+                       free(ptr->event_jid);
+#endif
+               ptr2 = ptr->next;
+               free(ptr);
+               ptr = ptr2;
+       }
+        end_critical_section(S_XMPP_QUEUE);
+
+}