From d62355e76dc90d982bf98a36d7d98d0576c58216 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Sun, 21 Jan 2007 17:58:01 +0000 Subject: [PATCH] (ef_open_srv, start_server): Journal must not be written before empth_init(), because writing calls empth_self(). Move call of journal_startup(). (ef_close_srv, finish_server, panic): Move call of journal_shutdown() for symmetry. --- src/lib/empthread/posix.c | 2 ++ src/lib/subs/fileinit.c | 3 --- src/server/main.c | 4 ++++ 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/lib/empthread/posix.c b/src/lib/empthread/posix.c index 459e6755..99616ce8 100644 --- a/src/lib/empthread/posix.c +++ b/src/lib/empthread/posix.c @@ -36,6 +36,7 @@ #include #include #include "empthread.h" +#include "journal.h" #include "prototypes.h" static void panic(int sig); @@ -80,6 +81,7 @@ panic(int sig) logerror("server received fatal signal %d", sig); log_last_commands(); ef_fin_srv(); + journal_shutdown(); /* End of unsafe code */ if (CANT_HAPPEN(sig != SIGBUS && sig != SIGSEGV diff --git a/src/lib/subs/fileinit.c b/src/lib/subs/fileinit.c index 5a15573e..0778d6bb 100644 --- a/src/lib/subs/fileinit.c +++ b/src/lib/subs/fileinit.c @@ -34,7 +34,6 @@ #include #include "file.h" -#include "journal.h" #include "prototypes.h" struct fileinit { @@ -100,7 +99,6 @@ ef_open_srv(void) { int failed = 0; - failed |= journal_startup() < 0; failed |= !ef_open(EF_NATION, EFF_MEM); failed |= !ef_open(EF_SECTOR, EFF_MEM); failed |= !ef_open(EF_SHIP, EFF_MEM); @@ -145,7 +143,6 @@ ef_close_srv(void) ef_close(EF_BMAP); ef_close(EF_LOST); ef_close(EF_REALM); - journal_shutdown(); } static int diff --git a/src/server/main.c b/src/server/main.c index 0fa742c1..839810de 100644 --- a/src/server/main.c +++ b/src/server/main.c @@ -320,6 +320,9 @@ start_server(int flags) empth_init((void **)&player, flags); + if (journal_startup() < 0) + exit(1); + empth_create(PP_ACCEPT, player_accept, (50 * 1024), flags, "AcceptPlayers", "Accept network connections", 0); empth_create(PP_KILLIDLE, player_kill_idle, (50 * 1024), flags, @@ -346,6 +349,7 @@ finish_server(void) #if defined(_WIN32) loc_NTTerm(); #endif + journal_shutdown(); remove(pidfname); }