X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fmodules%2Fnetwork%2Fserv_netmail.c;h=a1938c64cbcfbe949d31c5c4df14d7bd081a47df;hb=2b57abb4e89077f1bdf104e95203015810cf1a6f;hp=f0ca8d9288b3ef7ded94c1ede2196ecbedc3baba;hpb=5e3befebe2ed0ce85324da3be83b21880dc7d069;p=citadel.git diff --git a/citadel/modules/network/serv_netmail.c b/citadel/modules/network/serv_netmail.c index f0ca8d928..a1938c64c 100644 --- a/citadel/modules/network/serv_netmail.c +++ b/citadel/modules/network/serv_netmail.c @@ -72,7 +72,6 @@ #include "internet_addressing.h" #include "serv_network.h" #include "clientsocket.h" -#include "file_ops.h" #include "citadel_dirs.h" #include "threads.h" #include "context.h" @@ -137,8 +136,7 @@ static void ListCalculateSubject(struct CtdlMessage *msg) Subject = NewStrBufPlain(HKEY("(no subject)")); } else { - Subject = NewStrBufPlain( - msg->cm_fields[eMsgSubject], -1); + Subject = NewStrBufPlain(CM_KEY(msg, eMsgSubject)); } FlatSubject = NewStrBufPlain(NULL, StrLength(Subject)); StrBuf_RFC822_to_Utf8(FlatSubject, Subject, NULL, NULL); @@ -181,17 +179,11 @@ void network_deliver_digest(SpoolControl *sc) char *pbuf; struct CtdlMessage *msg = NULL; long msglen; - struct recptypes *valid; + recptypes *valid; char bounce_to[256]; - if (sc->Users[listrecp] == NULL) - return; - - if (sc->num_msgs_spooled < 1) { - fclose(sc->digestfp); - sc->digestfp = NULL; + if (sc->Users[digestrecp] == NULL) return; - } msg = malloc(sizeof(struct CtdlMessage)); memset(msg, 0, sizeof(struct CtdlMessage)); @@ -221,19 +213,15 @@ void network_deliver_digest(SpoolControl *sc) fread(pbuf, (size_t)msglen, 1, sc->digestfp); pbuf[msglen] = '\0'; CM_SetAsField(msg, eMesageText, &pbuf, msglen); - fclose(sc->digestfp); - sc->digestfp = NULL; /* Now generate the delivery instructions */ - if (sc->Users[listrecp] == NULL) - return; /* Where do we want bounces and other noise to be heard? - *Surely not the list members! */ + * Surely not the list members! */ snprintf(bounce_to, sizeof bounce_to, "room_aide@%s", config.c_fqdn); /* Now submit the message */ - valid = validate_recipients(ChrPtr(sc->Users[listrecp]), NULL, 0); + valid = validate_recipients(ChrPtr(sc->Users[digestrecp]), NULL, 0); if (valid != NULL) { valid->bounce_to = strdup(bounce_to); valid->envelope_from = strdup(bounce_to); @@ -258,6 +246,7 @@ void network_process_digest(SpoolControl *sc, struct CtdlMessage *omsg, long *de msg = CM_Duplicate(omsg); if (msg != NULL) { + sc->haveDigest = 1; fprintf(sc->digestfp, " -----------------------------------" "------------------------------------" @@ -327,7 +316,7 @@ void network_process_list(SpoolControl *sc, struct CtdlMessage *omsg, long *dele msg = CM_Duplicate(omsg); - CM_SetField(msg, eListID, SKEY(sc->Users[roommailalias])); + CM_SetField(msg, eReplyTo, SKEY(sc->Users[roommailalias])); /* if there is no other recipient, Set the recipient * of the list message to the email address of the @@ -355,7 +344,7 @@ void network_process_list(SpoolControl *sc, struct CtdlMessage *omsg, long *dele */ void network_deliver_list(struct CtdlMessage *msg, SpoolControl *sc, const char *RoomName) { - struct recptypes *valid; + recptypes *valid; char bounce_to[256]; /* Don't do this if there were no recipients! */ @@ -386,7 +375,7 @@ void network_process_participate(SpoolControl *sc, struct CtdlMessage *omsg, lon struct CtdlMessage *msg = NULL; int ok_to_participate = 0; StrBuf *Buf = NULL; - struct recptypes *valid; + recptypes *valid; /* * Process client-side list participations for this room @@ -408,7 +397,7 @@ void network_process_participate(SpoolControl *sc, struct CtdlMessage *omsg, lon ok_to_participate = 1; } - Buf = NewStrBufPlain(msg->cm_fields[eNodeName], -1); + Buf = NewStrBufPlain(CM_KEY(msg, eNodeName)); if (CtdlIsValidNode(NULL, NULL, Buf, @@ -540,7 +529,7 @@ void network_process_ignetpush(SpoolControl *sc, struct CtdlMessage *omsg, long } /* serialize it for transmission */ - serialize_message(&sermsg, msg); + CtdlSerializeMessage(&sermsg, msg); if (sermsg.len > 0) { /* write it to a spool file */