Field 'K' is now 'rep2=' in the citadel headers
[citadel.git] / citadel / msgbase.c
index 7a00b67791f29646345f1273a3d422ca8e6954ba..8cc816e8184a368e0a096ae6f6a6a94671035de7 100644 (file)
@@ -93,7 +93,7 @@ char *msgkeys[] = {
        "hnod",
        "msgn",
        "jrnl",
-       NULL,
+       "rep2",
        "list",
        "text",
        "node",
@@ -1658,7 +1658,7 @@ int CtdlOutputMsg(long msg_num,           /* message number (local) to fetch */
 ) {
        struct CitContext *CCC = CC;
        struct CtdlMessage *TheMessage = NULL;
-       int retcode = om_no_such_msg;
+       int retcode = CIT_OK;
        struct encapmsg encap;
        int r;
 
@@ -1748,15 +1748,20 @@ int CtdlOutputMsg(long msg_num,         /* message number (local) to fetch */
 
                }
                else {
-                       if (do_proto) cprintf("%d msg %ld has no part %s\n",
-                               ERROR + MESSAGE_NOT_FOUND, msg_num, section);
+                       if (do_proto) {
+                               cprintf("%d msg %ld has no part %s\n",
+                                       ERROR + MESSAGE_NOT_FOUND,
+                                       msg_num,
+                                       section);
+                       }
                        retcode = om_no_such_msg;
                }
 
        }
 
        /* Ok, output the message now */
-       retcode = CtdlOutputPreLoadedMsg(TheMessage, mode, headers_only, do_proto, crlf, flags);
+       if (retcode == CIT_OK)
+               retcode = CtdlOutputPreLoadedMsg(TheMessage, mode, headers_only, do_proto, crlf, flags);
        CtdlFreeMessage(TheMessage);
 
        return(retcode);
@@ -2178,7 +2183,6 @@ void Dump_RFC822HeadersBody(
        }
        if (outlen > 0) {
                client_write(outbuf, outlen);
-               outlen = 0;
        }
 }
 
@@ -2749,6 +2753,7 @@ int CtdlSaveMsgPointersInRoom(char *roomname, long newmsgidlist[], int num_newms
        msglist = realloc(msglist, (sizeof(long) * (num_msgs + num_msgs_to_be_merged)) );
        if (msglist == NULL) {
                MSGM_syslog(LOG_ALERT, "ERROR: can't realloc message list!\n");
+               free(msgs_to_be_merged);
                return (ERROR + INTERNAL_ERROR);
        }
        memcpy(&msglist[num_msgs], msgs_to_be_merged, (sizeof(long) * num_msgs_to_be_merged) );
@@ -2979,47 +2984,6 @@ void serialize_message(struct ser_ret *ret,              /* return values */
 }
 
 
-/*
- * Serialize a struct CtdlMessage into the format used on disk and network.
- * 
- * This function loads up a "struct ser_ret" (defined in server.h) which
- * contains the length of the serialized message and a pointer to the
- * serialized message in memory.  THE LATTER MUST BE FREED BY THE CALLER.
- */
-void dump_message(struct CtdlMessage *msg,     /* unserialized msg */
-                 long Siz)                     /* how many chars ? */
-{
-       int i;
-       static char *forder = FORDER;
-       char *buf;
-
-       /*
-        * Check for valid message format
-        */
-       if (is_valid_message(msg) == 0) {
-               struct CitContext *CCC = CC;
-               MSGM_syslog(LOG_ERR, "dump_message() aborting due to invalid message\n");
-               return;
-       }
-
-       buf = (char*) malloc (Siz + 1);
-
-       for (i=0; i<26; ++i) if (msg->cm_fields[(int)forder[i]] != NULL) {
-                       snprintf (buf, Siz, " msg[%c] = %s ...\n", (char) forder[i], 
-                                  msg->cm_fields[(int)forder[i]]);
-                       if (client_write (buf, strlen(buf)) == -1)
-                       {
-                               struct CitContext *CCC = CC;
-                               MSGM_syslog(LOG_ERR, "dump_message(): aborting due to write failure.\n");
-                               return;
-                       }
-               }
-
-       return;
-}
-
-
-
 /*
  * Check to see if any messages already exist in the current room which
  * carry the same Exclusive ID as this one.  If any are found, delete them.
@@ -4724,7 +4688,7 @@ int CtdlDeleteMessages(char *room_name,           /* which room */
                cdb_free(cdbfr);
        }
        if (num_msgs > 0) {
-               int have_contenttype = !IsEmptyStr(content_type);
+               int have_contenttype = (content_type != NULL) && !IsEmptyStr(content_type);
                int have_delmsgs = (num_dmsgnums == 0) || (dmsgnums == NULL);
                int have_more_del = 1;