TODO: the event_jid member contains an unclean pointer, no clue why.
const char *CitadelServiceXMPP="XMPP";
-
+extern void xmpp_cleanup_events(void);
CTDL_MODULE_INIT(xmpp)
{
if (!threading) {
CtdlRegisterSessionHook(xmpp_logout_hook, EVT_LOGOUT);
CtdlRegisterSessionHook(xmpp_login_hook, EVT_UNSTEALTH);
CtdlRegisterSessionHook(xmpp_logout_hook, EVT_STEALTH);
+ CtdlRegisterCleanupHook(xmpp_cleanup_events);
+
}
/* return our Subversion id for the Log */
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);
+
+}