]> code.citadel.org Git - citadel.git/blobdiff - citadel/citserver.c
libical, expat, and libsieve are now *required*.
[citadel.git] / citadel / citserver.c
index 37a3f7280c16fb48f6dbd9074a24188633be9faf..6dba619936c800ab85004676a4f547c02d10d46d 100644 (file)
@@ -70,7 +70,6 @@ struct CitContext *ContextList = NULL;
 struct CitContext* next_session = NULL;
 char *unique_session_numbers;
 int ScheduledShutdown = 0;
-int do_defrag = 0;
 time_t server_startup_time;
 int panic_fd;
 
@@ -140,10 +139,6 @@ void master_startup(void) {
        
        CtdlThreadAllocTSD();
        
-       if (do_defrag) {
-               defrag_databases();
-       }
-
        check_ref_counts();
 
        lprintf(CTDL_INFO, "Creating base rooms (if necessary)\n");
@@ -158,6 +153,12 @@ void master_startup(void) {
                 lputroom(&qrbuf);
         }
 
+       /* Aide needs to be public postable, else we're not RFC conformant. */
+        if (lgetroom(&qrbuf, AIDEROOM) == 0) {
+                qrbuf.QRflags2 |= QR2_SMTP_PUBLIC;
+                lputroom(&qrbuf);
+        }
+
        lprintf(CTDL_INFO, "Seeding the pseudo-random number generator...\n");
        urandom = fopen("/dev/urandom", "r");
        if (urandom != NULL) {
@@ -307,12 +308,8 @@ void cmd_info(void) {
        cprintf("%f\n", CtdlThreadWorkerAvg);
        cprintf("%d\n", CtdlThreadGetCount());
 
-       /* Does this server support Sieve mail filtering? */
-#ifdef HAVE_LIBSIEVE
-       cprintf("1\n");         /* yes */
-#else
-       cprintf("0\n");         /* no */
-#endif
+       cprintf("1\n");         /* yes, Sieve mail filtering is supported */
+       cprintf("%d\n", config.c_enable_fulltext);
        
        cprintf("000\n");
 }
@@ -657,7 +654,6 @@ void GenerateRoomDisplay(char *real_room,
                        struct CitContext *viewer) {
 
        int ra;
-       int rlen;
 
        strcpy(real_room, viewed->room.QRname);
        if (viewed->room.QRflags & QR_MAILBOX) {
@@ -671,10 +667,9 @@ void GenerateRoomDisplay(char *real_room,
        }
 
        if (viewed->cs_flags & CS_CHAT) {
-               rlen = strlen(real_room);
-               while (rlen < 14)
-                       real_room[rlen] = ' ';
-               real_room[15] = '\0';
+               while (strlen(real_room) < 14) {
+                       strcat(real_room, " ");
+               }
                strcpy(&real_room[14], "<chat>");
        }
 
@@ -986,7 +981,12 @@ void begin_session(struct CitContext *con)
                con->nologin = 1;
        }
 
-       lprintf(CTDL_NOTICE, "Session started.\n");
+       if (!CC->is_local_socket) {
+               lprintf(CTDL_NOTICE, "Session started from %s [%s].\n", con->cs_host, con->cs_addr);
+       }
+       else {
+               lprintf(CTDL_NOTICE, "Session started via local socket.\n");
+       }
 
        /* Run any session startup routines registered by loadable modules */
        PerformSessionHooks(EVT_START);
@@ -1067,6 +1067,10 @@ void do_command_loop(void) {
                cprintf("%d%cok\n", CIT_OK, CtdlCheckExpress() );
        }
        
+       else if (!strncasecmp(cmdbuf, "XYZZY", 5)) {
+               cprintf("%d Nothing happens.\n", CIT_OK);
+       }
+       
        else if (!strncasecmp(cmdbuf, "QNOP", 4)) {
                /* do nothing, this command returns no response */
        }
@@ -1417,10 +1421,13 @@ void do_command_loop(void) {
                cmd_isme(&cmdbuf[5]);
        }
 
+       else if (!strncasecmp(cmdbuf, "RENU", 4)) {
+               cmd_renu(&cmdbuf[5]);
+       }
+
        else if (!DLoader_Exec_Cmd(cmdbuf)) {
-               cprintf("%d Unrecognized or unsupported command.\n",
-                       ERROR + CMD_NOT_SUPPORTED);
-              }
+               cprintf("%d Unrecognized or unsupported command.\n", ERROR + CMD_NOT_SUPPORTED);
+       }
 
        unbuffer_output();