]> code.citadel.org Git - citadel.git/blobdiff - citadel/msgbase.c
* Finished the inbound side of gateway domain service
[citadel.git] / citadel / msgbase.c
index df17f3c4f975b63f1a1af650aa0a4d113e9f69c1..c5213d12b7ea9757e3365afc0b160ae61a87fdb5 100644 (file)
@@ -187,6 +187,7 @@ GETSN:              do {
                        while (bbb[strlen(bbb) - 1] == '_')
                                bbb[strlen(bbb) - 1] = 0;
                        sprintf(name, &aaa[4], bbb);
+                       lprintf(9, "returning MES_INTERNET\n");
                        return (MES_INTERNET);
                }
                if (!strncmp(aaa, "bin", 3)) {
@@ -203,10 +204,12 @@ GETSN:            do {
                        while (bbb[0] == ' ')
                                strcpy(bbb, &bbb[1]);
                        sprintf(name, "%s @%s", aaa, bbb);
+                       lprintf(9, "returning MES_BINARY\n");
                        return (MES_BINARY);
                }
                return (MES_ERROR);
        }
+       lprintf(9, "returning MES_LOCAL\n");
        return (MES_LOCAL);
 }
 
@@ -1375,7 +1378,7 @@ void serialize_message(struct ser_ret *ret,               /* return values */
                ret->len = ret->len +
                        strlen(msg->cm_fields[(int)forder[i]]) + 2;
 
-       lprintf(9, "calling malloc\n");
+       lprintf(9, "calling malloc(%d)\n", ret->len);
        ret->ser = mallok(ret->len);
        if (ret->ser == NULL) {
                ret->len = 0;
@@ -1476,7 +1479,7 @@ int ReplicationChecks(struct CtdlMessage *msg) {
 long CtdlSaveMsg(struct CtdlMessage *msg,      /* message to save */
                char *rec,                      /* Recipient (mail) */
                char *force,                    /* force a particular room? */
-               int mailtype,                   /* local or remote type */
+               int supplied_mailtype,          /* local or remote type */
                int generate_id)                /* 1 = generate 'I' field */
 {
        char aaa[100];
@@ -1494,9 +1497,11 @@ long CtdlSaveMsg(struct CtdlMessage *msg,        /* message to save */
        static int seqnum = 1;
        struct CtdlMessage *imsg;
        char *instr;
+       int mailtype;
 
        lprintf(9, "CtdlSaveMsg() called\n");
        if (is_valid_message(msg) == 0) return(-1);     /* self check */
+       mailtype = supplied_mailtype;
 
        /* If this message has no timestamp, we take the liberty of
         * giving it one, right now.
@@ -1540,6 +1545,7 @@ long CtdlSaveMsg(struct CtdlMessage *msg, /* message to save */
                           == hostalias_localhost) {
                                recipient[a] = 0;
                                lprintf(7, "Changed to <%s>\n", recipient);
+                               mailtype = MES_LOCAL;
                        }
                }
        }
@@ -1660,7 +1666,10 @@ long CtdlSaveMsg(struct CtdlMessage *msg,        /* message to save */
         * is no local sender; it would otherwise go to the Trashcan).
         */
        if ((!CC->internal_pgm) || (strlen(recipient) == 0)) {
-               CtdlSaveMsgPointerInRoom(actual_rm, newmsgid, 0);
+               if (CtdlSaveMsgPointerInRoom(actual_rm, newmsgid, 0) != 0) {
+                       lprintf(3, "ERROR saving message pointer!\n");
+                       CtdlSaveMsgPointerInRoom(AIDEROOM, newmsgid, 0);
+               }
        }
 
        /* For internet mail, drop a copy in the outbound queue room */
@@ -1683,6 +1692,11 @@ long CtdlSaveMsg(struct CtdlMessage *msg,        /* message to save */
                        MailboxName(actual_rm, &userbuf, MAILROOM);
                        CtdlSaveMsgPointerInRoom(actual_rm, newmsgid, 0);
                }
+               else {
+                       lprintf(9, "No user <%s>, saving in %s> instead\n",
+                               recipient, AIDEROOM);
+                       CtdlSaveMsgPointerInRoom(AIDEROOM, newmsgid, 0);
+               }
        }
 
        /* Perform "after save" hooks */