#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
+#include <libcitadel.h>
#include "citadel.h"
#include "server.h"
#include "citserver.h"
#include "support.h"
#include "config.h"
-#include "tools.h"
#include "room_ops.h"
#include "ctdl_module.h"
#include "clientsocket.h"
CtdlSubmitMsg(msg, recp, NULL);
CtdlFreeMessage(msg);
- free_recipients(recp);
/* write the uidl to the use table so we don't store this item again */
strcpy(ut.ut_msgid, utmsgid);
ut.ut_timestamp = time(NULL);
cdb_store(CDB_USETABLE, utmsgid, strlen(utmsgid), &ut, sizeof(struct UseTable) );
}
+ free_recipients(recp);
}
/*
* Scan for rooms that have RSS client requests configured
*/
-void rssclient_scan(void) {
+void *rssclient_scan(void *args) {
static time_t last_run = 0L;
static int doing_rssclient = 0;
struct rssnetcfg *rptr = NULL;
+ CtdlThreadAllocTSD();
/*
* Run RSS client no more frequently than once every n seconds
*/
- if ( (time(NULL) - last_run) < config.c_net_freq ) {
- return;
- }
+// if ( (time(NULL) - last_run) < config.c_net_freq ) {
+// return;
+// }
/*
* This is a simple concurrency check to make sure only one rssclient run
* don't really require extremely fine granularity here, we'll do it
* with a static variable instead.
*/
- if (doing_rssclient) return;
+ if (doing_rssclient) return NULL;
doing_rssclient = 1;
lprintf(CTDL_DEBUG, "rssclient started\n");
lprintf(CTDL_DEBUG, "rssclient ended\n");
last_run = time(NULL);
doing_rssclient = 0;
+ CtdlThreadSchedule ("RSS Client", CTDLTHREAD_BIGSTACK, rssclient_scan, NULL, last_run + config.c_net_freq);
+ return NULL;
}
CTDL_MODULE_INIT(rssclient)
{
+ if (threading)
+ {
#ifdef HAVE_EXPAT
- CtdlRegisterSessionHook(rssclient_scan, EVT_TIMER);
+// CtdlRegisterSessionHook(rssclient_scan, EVT_TIMER);
+ CtdlThreadSchedule ("RSS Client", CTDLTHREAD_BIGSTACK, rssclient_scan, NULL, 0);
#else
- lprintf(CTDL_INFO, "This server is missing the Expat XML parser. RSS client will be disabled.\n");
+ lprintf(CTDL_INFO, "This server is missing the Expat XML parser. RSS client will be disabled.\n");
#endif
+ }
+
/* return our Subversion id for the Log */
return "$Id: serv_rssclient.c 5652 2007-10-29 20:14:48Z ajc $";
}