* Any "delete message" operation which is synchronous to a client is now
[citadel.git] / citadel / citserver.c
index 0946ed54883313a388520114bb82911a69628ad1..868f2daab498b6d80e50f4e13317a9bdbeae3cfd 100644 (file)
@@ -112,6 +112,27 @@ void master_startup(void) {
                 lputroom(&qrbuf);
         }
 
+       /*
+        * Create a room in which we can deposit "deleted" messages for
+        * deferred deletion.  This will silently fail if the room already
+        * exists, and that's perfectly ok, because we want it to exist.
+        */
+       create_room(DELETED_MSGS_ROOM, 3, "", 0, 1, 0, VIEW_MAILBOX);
+
+       /*
+        * Make sure it's set to be a "system room" so it doesn't show up
+        * in the <K>nown rooms list for Aides.  Also set the message expire
+        * policy to "by count, 1 message" so everything gets deleted all
+        * the time (we can't set it to 0 because that's invalid, so we keep
+        * a single message around).
+        */
+       if (lgetroom(&qrbuf, DELETED_MSGS_ROOM) == 0) {
+               qrbuf.QRflags2 |= QR2_SYSTEM;
+               qrbuf.QRep.expire_mode = EXPIRE_NUMMSGS;
+               qrbuf.QRep.expire_value = 1;
+               lputroom(&qrbuf);
+       }
+
        lprintf(CTDL_INFO, "Seeding the pseudo-random number generator...\n");
        urandom = fopen("/dev/urandom", "r");
        if (urandom != NULL) {