]> code.citadel.org Git - citadel.git/blobdiff - citadel/citserver.c
here have code
[citadel.git] / citadel / citserver.c
index 6e287a7067bf458ffee95f9839547bef03b47ecd..7801761f61d1fb9cee43130198bc5b3e90e12d99 100644 (file)
@@ -1,16 +1,10 @@
-/* 
- * Main source module for the Citadel server
- *
- * Copyright (c) 1987-2019 by the citadel.org team
- *
- * This program is open source software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License, version 3.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- */
+// Main source module for the Citadel server
+//
+// Copyright (c) 1987-2021 by the citadel.org team
+//
+// This program is open source software.  Use, duplication, or disclosure
+// is subject to the terms of the GNU General Public License, version 3.
+// The program is distributed without any warranty, expressed or implied.
 
 #include <stdlib.h>
 #include <unistd.h>
@@ -54,12 +48,13 @@ void master_startup(void)
        syslog(LOG_INFO, "Checking directory access");
        if ((pw = getpwuid(ctdluid)) == NULL) {
                gid = getgid();
-       } else {
+       }
+       else {
                gid = pw->pw_gid;
        }
 
        if (create_run_directories(CTDLUID, gid) != 0) {
-               syslog(LOG_EMERG, "failed to access & create directories");
+               syslog(LOG_ERR, "citserver: failed to access and create directories");
                exit(1);
        }
        syslog(LOG_INFO, "Opening databases");
@@ -71,6 +66,13 @@ void master_startup(void)
        validate_config();
        migrate_legacy_control_record();
 
+       // If we have an existing database that is older than version 928, reindex the user records.
+       // Unfortunately we cannot do this in serv_upgrade.c because it needs to happen VERY early during startup.
+       int existing_db = CtdlGetConfigInt("MM_hosted_upgrade_level");
+       if ( (existing_db > 0) && (existing_db < 928) ) {
+               ForEachUser(reindex_user_928, NULL);
+       }
+
        /* Check floor reference counts */
        check_ref_counts();
 
@@ -116,7 +118,6 @@ void master_startup(void)
  */
 int master_cleanup(int exitcode)
 {
-       struct CleanupFunctionHook *fcn;
        static int already_cleaning_up = 0;
 
        if (already_cleaning_up) {
@@ -126,11 +127,6 @@ int master_cleanup(int exitcode)
        }
        already_cleaning_up = 1;
 
-       /* Run any cleanup routines registered by loadable modules */
-       for (fcn = CleanupHookTable; fcn != NULL; fcn = fcn->next) {
-               (*fcn->h_function_pointer) ();
-       }
-
        /* Do system-dependent stuff */
        sysdep_master_cleanup();
 
@@ -138,7 +134,7 @@ int master_cleanup(int exitcode)
        shutdown_config_system();
 
        /* Close databases */
-       syslog(LOG_INFO, "Closing databases\n");
+       syslog(LOG_INFO, "citserver: closing databases");
        close_databases();
 
        /* If the operator requested a halt but not an exit, halt here. */
@@ -182,12 +178,12 @@ char CtdlCheckExpress(void)
 void citproto_begin_session()
 {
        if (CC->nologin == 1) {
-               cprintf("%d %s: Too many users are already online (maximum is %d)\n",
-                       ERROR + MAX_SESSIONS_EXCEEDED, CtdlGetConfigStr("c_nodename"), CtdlGetConfigInt("c_maxsessions")
+               cprintf("%d Too many users are already online (maximum is %d)\n",
+                       ERROR + MAX_SESSIONS_EXCEEDED, CtdlGetConfigInt("c_maxsessions")
                    );
                CC->kill_me = KILLME_MAX_SESSIONS_EXCEEDED;
        } else {
-               cprintf("%d %s Citadel server ready.\n", CIT_OK, CtdlGetConfigStr("c_nodename"));
+               cprintf("%d %s Citadel server ready.\n", CIT_OK, CtdlGetConfigStr("c_fqdn"));
                CC->can_receive_im = 1;
        }
 }
@@ -196,7 +192,7 @@ void citproto_begin_session()
 void citproto_begin_admin_session()
 {
        CC->internal_pgm = 1;
-       cprintf("%d %s Citadel server ADMIN CONNECTION ready.\n", CIT_OK, CtdlGetConfigStr("c_nodename"));
+       cprintf("%d %s Citadel server ADMIN CONNECTION ready.\n", CIT_OK, CtdlGetConfigStr("c_fqdn"));
 }