void ParseRoomAlias(const CfgLineType *ThisOne, StrBuf *Line, const char *LinePos, OneRoomNetCfg *rncfg)
{
-/*
- if (rncfg->RNCfg->sender != NULL)
- continue; / * just one alowed... * /
- extract_token(nptr->name, buf, 1, '|', sizeof nptr->name);
- rncfg->RNCfg->sender = nptr;
-*/
+ if (rncfg->Sender != NULL)
+ return;
+
+ ParseGeneric(ThisOne, Line, LinePos, rncfg);
+ rncfg->Sender = NewStrBufDup(rncfg->NetConfigs[roommailalias]->Value[0]);
}
void ParseSubPendingLine(const CfgLineType *ThisOne, StrBuf *Line, const char *LinePos, OneRoomNetCfg *OneRNCFG)
void CalcListID(SpoolControl *sc)
{
+ StrBuf *RoomName;
const char *err;
int fd;
struct CitContext *CCC = CC;
assoc_file_name(filename, sizeof filename, &sc->room, ctdl_info_dir);
fd = open(filename, 0);
- if (fd != 0) {
+ if (fd > 0) {
struct stat stbuf;
if ((fstat(fd, &stbuf) == 0) &&
}
StrBufAppendBufPlain(sc->ListID, HKEY("<"), 0);
+ RoomName = NewStrBufPlain (sc->room.QRname, -1);
+ StrBufAsciify(RoomName, '_');
+ StrBufReplaceChars(RoomName, ' ', '_');
if (StrLength(sc->Users[roommailalias]) > 0)
{
else
{
StrBufAppendBufPlain(sc->ListID, HKEY("room_"), 0);
- StrBufAppendBufPlain(sc->ListID, sc->room.QRname, -1, 0);
+ StrBufAppendBuf(sc->ListID, RoomName, 0);
StrBufAppendBufPlain(sc->ListID, HKEY("."), 0);
StrBufAppendBufPlain(sc->ListID, config.c_fqdn, -1, 0);
/*
{
sc->Users[roommailalias] = NewStrBuf();
- StrBufPrintf(sc->Users[roommailalias],
- "room_%s@%s",
- CCC->room.QRname,
- config.c_fqdn);
+ StrBufAppendBufPlain(sc->Users[roommailalias], HKEY("room_"), 0);
+ StrBufAppendBuf(sc->Users[roommailalias], RoomName, 0);
+ StrBufAppendBufPlain(sc->Users[roommailalias], HKEY("@"), 0);
+ StrBufAppendBufPlain(sc->Users[roommailalias], config.c_fqdn, -1, 0);
- StrBufAsciify(sc->Users[roommailalias], '_');
StrBufLowerCase(sc->Users[roommailalias]);
}
+ FreeStrBuf(&RoomName);
}
*/
void network_process_buffer(char *buffer, long size, HashList *working_ignetcfg, HashList *the_netmap, int *netmap_changed)
{
+ long len;
struct CitContext *CCC = CC;
StrBuf *Buf = NULL;
struct CtdlMessage *msg = NULL;
for (pos = 3; pos < size; ++pos) {
field = buffer[pos];
- msg->cm_fields[field] = strdup(&buffer[pos+1]);
- pos = pos + strlen(&buffer[(int)pos]);
+ len = strlen(buffer + pos + 1);
+ msg->cm_fields[field] = malloc(len + 1);
+ memcpy (msg->cm_fields[field], buffer+ pos + 1, len + 1);
+ pos = pos + len + 1;
}
/* Check for message routing */
long msgend = (-1L);
long msgcur = 0L;
int ch;
-
+ int nMessages = 0;
fp = fopen(filename, "rb");
if (fp == NULL) {
}
++msgcur;
+ nMessages ++;
}
msgend = msgcur - 1;
working_ignetcfg,
the_netmap,
netmap_changed);
+ nMessages ++;
}
+ if (nMessages > 0)
+ QN_syslog(LOG_INFO,
+ "network: processed %d messages in %s\n",
+ nMessages,
+ filename);
+
fclose(fp);
unlink(filename);
}
(filedir_entry != NULL))
{
#ifdef _DIRENT_HAVE_D_NAMLEN
- d_namelen = filedir_entry->d_namelen;
+ d_namelen = filedir_entry->d_namlen;
#else
d_namelen = strlen(filedir_entry->d_name);
(filedir_entry != NULL))
{
#ifdef _DIRENT_HAVE_D_NAMLEN
- d_namelen = filedir_entry->d_namelen;
+ d_namelen = filedir_entry->d_namlen;
#else
d_namelen = strlen(filedir_entry->d_name);
do {} while ((FileMoveChunked(&FDIO, &err) > 0) && (err == NULL));
if (err == NULL) {
unlink(filename);
+ QN_syslog(LOG_DEBUG,
+ "Spoolfile %s now "SIZE_T_FMT" k\n",
+ spooloutfilename,
+ (dsize + fsize)/1024
+ );
}
else {
nFailed++;