From: Markus Armbruster Date: Sun, 21 Jan 2007 17:58:01 +0000 (+0000) Subject: (ef_open_srv, start_server): Journal must not be written before X-Git-Tag: v4.3.10~239 X-Git-Url: http://git.pond.sub.org/?p=empserver;a=commitdiff_plain;h=d62355e76dc90d982bf98a36d7d98d0576c58216 (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. --- diff --git a/src/lib/empthread/posix.c b/src/lib/empthread/posix.c index 459e67558..99616ce8d 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 5a15573e6..0778d6bb7 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 0fa742c1e..839810de1 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); }