]> git.pond.sub.org Git - empserver/commitdiff
(ef_open_srv, start_server): Journal must not be written before
authorMarkus Armbruster <armbru@pond.sub.org>
Sun, 21 Jan 2007 17:58:01 +0000 (17:58 +0000)
committerMarkus Armbruster <armbru@pond.sub.org>
Sun, 21 Jan 2007 17:58:01 +0000 (17:58 +0000)
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
src/lib/subs/fileinit.c
src/server/main.c

index 459e67558cf304bacf612e4dc868b7522c995cab..99616ce8d4d284b070169840357abcb1545797a3 100644 (file)
@@ -36,6 +36,7 @@
 #include <signal.h>
 #include <unistd.h>
 #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
index 5a15573e6065bc921325d7926ab4c056f0209dc7..0778d6bb7bc16fa94cd8f0c12043c1ba3cd5d6db 100644 (file)
@@ -34,7 +34,6 @@
 #include <config.h>
 
 #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
index 0fa742c1e62100d994fa681ad80803e7e0c7f69b..839810de1fd9c2905376b3e9b419f523ca0701c0 100644 (file)
@@ -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);
 }