diff --git a/include/prototypes.h b/include/prototypes.h index 8e41758a..0cc0dd1f 100644 --- a/include/prototypes.h +++ b/include/prototypes.h @@ -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); diff --git a/src/lib/gen/service.c b/src/lib/gen/service.c index 71ed1c5e..6bd67821 100644 --- a/src/lib/gen/service.c +++ b/src/lib/gen/service.c @@ -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; diff --git a/src/server/main.c b/src/server/main.c index 22b77674..e9934752 100644 --- a/src/server/main.c +++ b/src/server/main.c @@ -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()); -} - -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,