+ char *serialized_config = NULL;
+ long lastsent = 0;
+ char buf[SIZ];
+ int config_lines;
+ int i;
+ int number_of_messages_processed = 0;
+ int number_of_recipients = 0;
+
+ if (CtdlGetRoom(&CC->room, qrbuf->QRname)) {
+ syslog(LOG_DEBUG, "listdeliver: no room <%s>", qrbuf->QRname);
+ return;
+ }
+
+ serialized_config = LoadRoomNetConfigFile(qrbuf->QRnumber);
+ if (!serialized_config) {
+ return; // no netconfig, no processing, no problem
+ }
+
+ config_lines = num_tokens(serialized_config, '\n');
+ for (i=0; i<config_lines; ++i) {
+ extract_token(buf, serialized_config, i, '\n', sizeof buf);
+
+ if (!strncasecmp(buf, "lastsent|", 9)) {
+ lastsent = atol(&buf[9]);
+ }
+ else if ( (!strncasecmp(buf, "listrecp|", 9)) || (!strncasecmp(buf, "digestrecp|", 11)) ) {
+ ++number_of_recipients;
+ }
+ }
+
+ if (number_of_recipients > 0) {
+ syslog(LOG_DEBUG, "listdeliver: processing new messages in <%s> for <%d> recipients", qrbuf->QRname, number_of_recipients);
+ number_of_messages_processed = CtdlForEachMessage(MSGS_GT, lastsent, NULL, NULL, NULL, listdeliver_do_msg, NULL);
+ syslog(LOG_DEBUG, "listdeliver: processed %d messages", number_of_messages_processed);
+
+ if (number_of_messages_processed > 0) {
+ // FIXME write lastsent back to netconfig
+ }
+ }
+
+ free(serialized_config);