X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fmodules%2Fnetwork%2Fserv_netspool.c;h=cbff2d41223804780b51b4b32426377a6c3aaf16;hb=03b55c2733d2435f87810070d3ecce2ca014c067;hp=ca0d6181e3309362dd4c436cb16a1ec6664f8fb3;hpb=ce8ccae34638f0a250526db7da80b7ce412eb3a2;p=citadel.git diff --git a/citadel/modules/network/serv_netspool.c b/citadel/modules/network/serv_netspool.c index ca0d6181e..cbff2d412 100644 --- a/citadel/modules/network/serv_netspool.c +++ b/citadel/modules/network/serv_netspool.c @@ -224,6 +224,7 @@ void InspectQueuedRoom(SpoolControl **pSC, void CalcListID(SpoolControl *sc) { + StrBuf *RoomName; const char *err; int fd; struct CitContext *CCC = CC; @@ -233,7 +234,7 @@ void CalcListID(SpoolControl *sc) 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) && @@ -264,6 +265,9 @@ void CalcListID(SpoolControl *sc) } StrBufAppendBufPlain(sc->ListID, HKEY("<"), 0); + RoomName = NewStrBufPlain (sc->room.QRname, -1); + StrBufAsciify(RoomName, '_'); + StrBufReplaceChars(RoomName, ' ', '_'); if (StrLength(sc->Users[roommailalias]) > 0) { @@ -282,9 +286,10 @@ void CalcListID(SpoolControl *sc) 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); + FreeStrBuf(&RoomName); /* * this used to be: * roomname @@ -299,12 +304,11 @@ void CalcListID(SpoolControl *sc) { 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]); } @@ -395,6 +399,7 @@ void network_spoolout_room(SpoolControl *sc) */ 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; @@ -433,8 +438,10 @@ void network_process_buffer(char *buffer, long size, HashList *working_ignetcfg, 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 */ @@ -924,7 +931,7 @@ void network_consolidate_spoolout(HashList *working_ignetcfg, HashList *the_netm if (err == NULL) { unlink(filename); QN_syslog(LOG_DEBUG, - "Spoolfile %s now %ld k\n", + "Spoolfile %s now "SIZE_T_FMT" k\n", spooloutfilename, (dsize + fsize)/1024 );