]> code.citadel.org Git - citadel.git/blobdiff - citadel/modules/network/serv_netmail.c
Removed the caching of netconfig entries. The caching of configdb entries now serves...
[citadel.git] / citadel / modules / network / serv_netmail.c
index 2782fbf8f23bf60a4b8a08fe98534b5fe362cac7..9ca6ba5a957af81458a21d1323a9a639e9f851af 100644 (file)
@@ -2,7 +2,7 @@
  * This module handles shared rooms, inter-Citadel mail, and outbound
  * mailing list processing.
  *
- * Copyright (c) 2000-2012 by the citadel.org team
+ * Copyright (c) 2000-2015 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.
@@ -185,12 +185,6 @@ void network_deliver_digest(SpoolControl *sc)
        if (sc->Users[digestrecp] == NULL)
                return;
 
-       if (sc->num_msgs_spooled < 1) {
-               fclose(sc->digestfp);
-               sc->digestfp = NULL;
-               return;
-       }
-
        msg = malloc(sizeof(struct CtdlMessage));
        memset(msg, 0, sizeof(struct CtdlMessage));
        msg->cm_magic = CTDLMESSAGE_MAGIC;
@@ -221,12 +215,10 @@ void network_deliver_digest(SpoolControl *sc)
        CM_SetAsField(msg, eMesageText, &pbuf, msglen);
 
        /* Now generate the delivery instructions */
-       if (sc->Users[digestrecp] == NULL)
-               return;
 
        /* Where do we want bounces and other noise to be heard?
-        *Surely not the list members! */
-       snprintf(bounce_to, sizeof bounce_to, "room_aide@%s", config.c_fqdn);
+        * Surely not the list members! */
+       snprintf(bounce_to, sizeof bounce_to, "room_aide@%s", CtdlGetConfigStr("c_fqdn"));
 
        /* Now submit the message */
        valid = validate_recipients(ChrPtr(sc->Users[digestrecp]), NULL, 0);
@@ -245,15 +237,27 @@ void network_process_digest(SpoolControl *sc, struct CtdlMessage *omsg, long *de
 
        struct CtdlMessage *msg = NULL;
 
-       /*
-        * Process digest recipients
-        */
-       if ((sc->Users[digestrecp] == NULL)||
-           (sc->digestfp == NULL))
+       if (sc->Users[digestrecp] == NULL)
                return;
 
+       /* If there are digest recipients, we have to build a digest */
+       if (sc->digestfp == NULL) {
+               
+               sc->digestfp = create_digest_file(&sc->room, 1);
+
+               if (sc->digestfp == NULL)
+                       return;
+
+               sc->haveDigest = ftell(sc->digestfp) > 0;
+               if (!sc->haveDigest) {
+                       fprintf(sc->digestfp, "Content-type: text/plain\n\n");
+               }
+               sc->haveDigest = 1;
+       }
+
        msg = CM_Duplicate(omsg);
        if (msg != NULL) {
+               sc->haveDigest = 1;
                fprintf(sc->digestfp,
                        " -----------------------------------"
                        "------------------------------------"
@@ -362,7 +366,7 @@ void network_deliver_list(struct CtdlMessage *msg, SpoolControl *sc, const char
 
        /* Where do we want bounces and other noise to be heard?
         *  Surely not the list members! */
-       snprintf(bounce_to, sizeof bounce_to, "room_aide@%s", config.c_fqdn);
+       snprintf(bounce_to, sizeof bounce_to, "room_aide@%s", CtdlGetConfigStr("c_fqdn"));
 
        /* Now submit the message */
        valid = validate_recipients(ChrPtr(sc->Users[listrecp]), NULL, 0);
@@ -399,8 +403,8 @@ void network_process_participate(SpoolControl *sc, struct CtdlMessage *omsg, lon
         */
        ok_to_participate = 0;
        if (!CM_IsEmpty(msg, eNodeName)) {
-               if (!strcasecmp(msg->cm_fields[eNodeName],
-                               config.c_nodename)) {
+               if (!strcasecmp(msg->cm_fields[eNodeName], CtdlGetConfigStr("c_nodename")))
+               {
                        ok_to_participate = 1;
                }
                
@@ -591,7 +595,7 @@ void network_spool_msg(long msgnum,
 
        sc = (SpoolControl *)userdata;
 
-       msg = CtdlFetchMessage(msgnum, 1);
+       msg = CtdlFetchMessage(msgnum, 1, 1);
 
        if (msg == NULL)
        {