]> git.pond.sub.org Git - empserver/commitdiff
(init_server, start_server): Move signal and thread initialization
authorMarkus Armbruster <armbru@pond.sub.org>
Wed, 9 Mar 2005 19:37:48 +0000 (19:37 +0000)
committerMarkus Armbruster <armbru@pond.sub.org>
Wed, 9 Mar 2005 19:37:48 +0000 (19:37 +0000)
from init_server() to start_server(), and service startup next to its
Unix equivalent disassoc().  This way, threading is always initialized
after daemonizing, which is simpler and more portable.

include/prototypes.h
src/lib/gen/service.c
src/server/main.c

index 8e41758ab1ac13296a4ad8bc5d65b435b57af1e2..0cc0dd1fb06ea4daec408dd60a7afac8db15dc42 100644 (file)
@@ -48,7 +48,7 @@
 extern void close_files(void);
 extern void panic(int sig);
 extern void shutdwn(int sig);
-extern void init_server(int);
+extern void init_server(void);
 extern void start_server(int);
 #if defined(_WIN32)
 extern void loc_NTTerm(void);
index 71ed1c5eae698702b77a8042f30d60d32b16f335..6bd67821162c3c75e73ceaa964ef917969cd33b8 100644 (file)
@@ -203,7 +203,7 @@ service_ctrl_handler(DWORD Opcode)
 void WINAPI
 service_main(DWORD argc, LPTSTR *argv)
 {
-    init_server(0);
+    init_server();
 
     service_status.dwServiceType        = SERVICE_WIN32; 
     service_status.dwCurrentState       = SERVICE_START_PENDING; 
index 22b776748f11187c23849624949cbf81276bbd00..e99347528500d0937dd06295a06226a74f2cf3e7 100644 (file)
@@ -200,6 +200,8 @@ main(int argc, char **argv)
        return install_service(argv[0], service_name, datadir_set, config_file);
 #endif /* _WIN32 */
 
+    init_server();
+
 #if defined(_WIN32)
     if (daemonize != 0) {
        SERVICE_TABLE_ENTRY DispatchTable[]={{"Empire Server", service_main},{NULL, NULL}};
@@ -218,13 +220,10 @@ main(int argc, char **argv)
        }
     }
     daemonize = 0;
-#endif /* _WIN32 */
-
-    init_server(flags);
-#ifndef _WIN32
+#else  /* !_WIN32 */
     if (daemonize)
        disassoc();
-#endif
+#endif /* !_WIN32 */
     start_server(flags);
 
 #if defined(__linux__) && defined(_EMPTH_POSIX)
@@ -249,18 +248,38 @@ main(int argc, char **argv)
 
 
 void
-init_server(int flags)
+init_server(void)
 {
-#ifdef POSIXSIGNALS
-    struct sigaction act;
-#endif /* POSIXSIGNALS */
-
+    srand(time(NULL));
 #if defined(_WIN32)
     loc_NTInit();
 #endif
     update_policy_check();
-
     nullify_objects();
+    global_init();
+    shutdown_init();
+    player_init();
+    ef_init();
+    init_files();
+    io_init();
+    init_nreport();
+
+    if (opt_MOB_ACCESS) {
+       /* This fixes up mobility upon restart */
+       mobility_init();
+    }
+
+    loginit("server");
+    logerror("------------------------------------------------------");
+    logerror("Empire server (pid %d) started", (int)getpid());
+}
+
+void
+start_server(int flags)
+{
+#ifdef POSIXSIGNALS
+    struct sigaction act;
+#endif /* POSIXSIGNALS */
 
 #if !defined(_WIN32)
     /* signal() should not be used with mit pthreads. Anyway if u
@@ -302,29 +321,9 @@ init_server(int flags)
     signal(SIGPIPE, SIG_IGN);
 #endif /* POSIXSIGNALS */
 #endif /* _WIN32 */
-    empth_init((char **)&player, flags);
-    srand(time(NULL));
-    global_init();
-    shutdown_init();
-    player_init();
-    ef_init();
-    init_files();
-    io_init();
-    init_nreport();
 
-    if (opt_MOB_ACCESS) {
-       /* This fixes up mobility upon restart */
-       mobility_init();
-    }
-
-    loginit("server");
-    logerror("------------------------------------------------------");
-    logerror("Empire server (pid %d) started", (int)getpid());
-}
+    empth_init((char **)&player, flags);
 
-void
-start_server(int flags)
-{
     empth_create(PP_ACCEPT, player_accept, (50 * 1024), flags,
                 "AcceptPlayers", "Accept network connections", 0);
     empth_create(PP_KILLIDLE, player_kill_idle, (50 * 1024), flags,