* tinfoil-hat secure, it just needs to be reasonably unguessable
* and unique.
*/
- len = sprintf(sourcebuf, "%lx",
- (long) (++seq + getpid() + time(NULL))
- );
+ len = sprintf(sourcebuf, "%lx", (long) (++seq + getpid() + time(NULL)));
/* Convert it to base64 so it looks cool */
len = CtdlEncodeBase64(buf, sourcebuf, len, 0);
}
}
+
const RoomNetCfg ActiveSubscribers[] = {listrecp, digestrecp};
int CountThisSubscriber(OneRoomNetCfg *OneRNCfg, StrBuf *email)
* This module handles shared rooms, inter-Citadel mail, and outbound
* mailing list processing.
*
- * Copyright (c) 2000-2015 by the citadel.org team
+ * Copyright (c) 2000-2016 by the citadel.org team
*
- * 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 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.
+ * 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.
*
* ** NOTE ** A word on the S_NETCONFIGS semaphore:
* This is a fairly high-level type of critical section. It ensures that no
/*
* Spools out one message from the list.
*/
-void network_spool_msg(long msgnum,
- void *userdata)
+void network_spool_msg(long msgnum, void *userdata)
{
- struct CitContext *CCC = CC;
struct CtdlMessage *msg = NULL;
long delete_after_send = 0; /* Set to 1 to delete after spooling */
SpoolControl *sc;
sc = (SpoolControl *)userdata;
-
msg = CtdlFetchMessage(msgnum, 1, 1);
if (msg == NULL)
{
- QN_syslog(LOG_ERR,
- "failed to load Message <%ld> from disk\n",
- msgnum);
+ syslog(LOG_ERR, "failed to load Message <%ld> from disk\n", msgnum);
return;
}
network_process_list(sc, msg, &delete_after_send);
sc = (SpoolControl*)malloc(sizeof(SpoolControl));
memset(sc, 0, sizeof(SpoolControl));
- sc->lastsent = room_to_spool->lastsent;
sc->working_ignetcfg = working_ignetcfg;
sc->the_netmap = the_netmap;
if ( (!HaveSpoolConfig(sc->RNCfg)) || (sc->room.QRhighest <= sc->RNCfg->lastsent) )
{
// There is nothing to send from this room.
- syslog(LOG_DEBUG, "nothing to do for <%s>", room_to_spool->name);
+ syslog(LOG_DEBUG, "Nothing to do for <%s>", room_to_spool->name);
FreeRoomNetworkStruct(&sc->RNCfg);
sc->RNCfg = NULL;
free(sc);
}
sc->lastsent = sc->RNCfg->lastsent;
+ room_to_spool->lastsent = sc->lastsent;
/* Now lets remember whats needed for the actual work... */
*/
memcpy (&CCC->room, &sc->room, sizeof(ctdlroom));
- syslog(LOG_INFO, "network_spoolout_room(%s)", CCC->room.QRname);
+ syslog(LOG_INFO, "network_spoolout_room(room=%s, lastsent=%ld)", CCC->room.QRname, sc->lastsent);
CalcListID(sc);
lastsent = sc->lastsent;
/* Fetch the messages we ought to send & prepare them. */
- CtdlForEachMessage(MSGS_GT, sc->lastsent, NULL, NULL, NULL,
- network_spool_msg, sc);
+ CtdlForEachMessage(MSGS_GT, sc->lastsent, NULL, NULL, NULL, network_spool_msg, sc);
if (StrLength(sc->Users[roommailalias]) > 0)
{
}
/* Now rewrite the netconfig */
-
- // THIS IS THE ONLY PLACE WHERE WE HAVE TO REWRITE THE NETCONFIG.
-
-
+ syslog(LOG_DEBUG, "lastsent was %ld , now it is %ld", lastsent, sc->lastsent);
if (sc->lastsent != lastsent)
{
OneRoomNetCfg *r;
begin_critical_section(S_NETCONFIGS);
r = CtdlGetNetCfgForRoom(sc->room.QRnumber);
-
- r->lastsent = sc->lastsent; // FIXME we have to do something here !!!!!!!
-
+ r->lastsent = sc->lastsent;
SaveRoomNetConfigFile(r, sc->room.QRnumber);
FreeRoomNetworkStruct(&r);
end_critical_section(S_NETCONFIGS);