]> code.citadel.org Git - citadel.git/blobdiff - citadel/citserver.c
Now the text client and webcit show the servers svn revision too.
[citadel.git] / citadel / citserver.c
index 012d839cb5757de320047e8649caf13bc8e72542..9e78857188c305105722dabc0a0537edf77a9f83 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) {
@@ -247,13 +248,10 @@ void RemoveContext (struct CitContext *con)
         *       might make references to "CC" assuming it's the right one.
         */
        become_session(con);
+       logout();
        PerformSessionHooks(EVT_STOP);
        become_session(NULL);
 
-       /* Now handle all of the administrivia. */
-       lprintf(CTDL_DEBUG, "Calling logout(%d)\n", con->cs_pid);
-       logout(con);
-
        lprintf(CTDL_NOTICE, "[%3d] Session ended.\n", con->cs_pid);
 
        /* If the client is still connected, blow 'em away. */
@@ -307,12 +305,9 @@ 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("%s\n", svn_revision());
        
        cprintf("000\n");
 }
@@ -984,7 +979,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);
@@ -1065,6 +1065,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 */
        }
@@ -1079,7 +1083,7 @@ void do_command_loop(void) {
        }
 
        else if (!strncasecmp(cmdbuf,"LOUT",4)) {
-               if (CC->logged_in) logout(CC);
+               if (CC->logged_in) logout();
                cprintf("%d logged out.\n", CIT_OK);
        }
 
@@ -1415,10 +1419,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();