/*
- * $Id$
- *
* XMPP event queue
*
* Copyright (c) 2007-2009 by Art Cancro
*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
+ * This program is open source software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3.
+ *
+ *
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ *
+ *
*
*/
#include "serv_xmpp.h"
int queue_event_seq = 0;
+struct xmpp_event *xmpp_queue = NULL;
void xmpp_queue_event(int event_type, char *email_addr) {
int purged_something = 0;
struct CitContext *cptr;
- CtdlLogPrintf(CTDL_DEBUG, "xmpp_queue_event(%d, %s)\n", event_type, email_addr);
+ XMPP_syslog(LOG_DEBUG, "xmpp_queue_event(%d, %s)\n", event_type, email_addr);
/* Purge events more than a minute old */
begin_critical_section(S_XMPP_QUEUE);
begin_critical_section(S_SESSION_TABLE);
for (cptr = ContextList; cptr != NULL; cptr = cptr->next) {
if ((cptr->logged_in) && (cptr->h_async_function == xmpp_async_loop)) {
- cptr->async_waiting = 1;
+ set_async_waiting(cptr);
}
}
end_critical_section(S_SESSION_TABLE);
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) {
+ ptr2 = ptr->next;
+ free(ptr);
+ ptr = ptr2;
+ }
+ end_critical_section(S_XMPP_QUEUE);
+
+}
+
+CTDL_MODULE_INIT(xmpp_queue)
+{
+ if (!threading) {
+
+ CtdlRegisterCleanupHook(xmpp_cleanup_events);
+ }
+
+ /* return our module name for the log */
+ return "xmpp_queue";
+}