]> git.pond.sub.org Git - empserver/commitdiff
(finish_server): New, factored out of termination code. Fixes two
authorMarkus Armbruster <armbru@pond.sub.org>
Sat, 12 Mar 2005 16:28:28 +0000 (16:28 +0000)
committerMarkus Armbruster <armbru@pond.sub.org>
Sat, 12 Mar 2005 16:28:28 +0000 (16:28 +0000)
places in service_main() that lacked close_files().
(close_files, loc_NTTerm): Static linkage.

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

index 2fd70b6b5693ea4bca3ad2570ce29dfbcdc2bd98..a3d1b848b52dfdc34ada48726b0cdad06e108094 100644 (file)
 #include "commodity.h"
 
 /* src/server/main.c */
-extern void close_files(void);
 extern void panic(int sig);
 extern void shutdwn(int sig);
 extern void init_server(void);
 extern void start_server(int);
-#if defined(_WIN32)
-extern void loc_NTTerm(void);
-#endif
+extern void finish_server(void);
 
 /*****************************************************************************
  * src/lib/ * / *.c 
index e79bff2c5621d9238e55dd373b2d0d480581408e..96d95b25defde00942ce2b0d678c995144dea88a 100644 (file)
@@ -202,13 +202,13 @@ service_main(DWORD argc, LPTSTR *argv)
  
     if (service_status_handle == (SERVICE_STATUS_HANDLE)0) { 
         logerror("RegisterServiceCtrlHandler failed %d\n", GetLastError());
-       loc_NTTerm();
+       finish_server()
         return;
     }
  
     if ((hShutdownEvent = CreateEvent(NULL, TRUE, FALSE, NULL)) == NULL) {
         logerror("CreateEvent for Shutdown failed %d\n", GetLastError());
-       loc_NTTerm();
+       finish_server()
        return;
     }
 
@@ -225,11 +225,8 @@ service_main(DWORD argc, LPTSTR *argv)
 
     empth_exit();
 
-    /* We should never get here.  But, just in case... */
-    close_files();
-
-    loc_NTTerm();
-    return;
+    CANT_HAPPEN("main thread terminated");
+    finish_server();
 }
 
 void
index a625708ed47411074b34e69f6df0e6a69ee67fbc..c258d06314108d3929a4491d44bffa1f23322dad 100644 (file)
 
 static void nullify_objects(void);
 static void init_files(void);
+static void close_files(void);
 
 #if defined(_WIN32)
 static void loc_NTInit(void);
+static void loc_NTTerm(void);
 #endif
 
 static int mainpid = 0;
@@ -218,7 +220,7 @@ main(int argc, char **argv)
             */
            if (GetLastError() != ERROR_FAILED_SERVICE_CONTROLLER_CONNECT) {
                logerror("Failed to dispatch service (%d)", GetLastError());
-               loc_NTTerm();
+               finish_server();
                exit(EXIT_FAILURE);
            }
        }
@@ -241,12 +243,8 @@ main(int argc, char **argv)
 
     empth_exit();
 
-/* We should never get here.  But, just in case... */
-    close_files();
-
-#if defined(_WIN32)
-    loc_NTTerm();
-#endif
+    CANT_HAPPEN("main thread terminated");
+    finish_server();
     return EXIT_SUCCESS;
 }
 
@@ -330,6 +328,18 @@ start_server(int flags)
     }
 }
 
+/*
+ * Finish serving, release resources.
+ */
+void
+finish_server(void)
+{
+    close_files();
+#if defined(_WIN32)
+    loc_NTTerm();
+#endif
+}
+
 static void
 init_files(void)
 {
@@ -355,7 +365,7 @@ init_files(void)
     }
 }
 
-void
+static void
 close_files(void)
 {
     ef_close(EF_NATION);
@@ -462,15 +472,13 @@ shutdwn(int sig)
        logerror("Server shutting down on signal %d", sig);
     else
        logerror("Server shutting down at Deity's request");
-    close_files();
+    finish_server();
 
 #if defined(_WIN32)
-    loc_NTTerm();
-    if (!daemonize)
-       _exit(0);
-#else
-    _exit(0);
+    if (daemonize)
+       return;
 #endif
+    _exit(0);
 }
 
 
@@ -541,7 +549,7 @@ nullify_objects(void)
 
 #if defined(_WIN32)
 static void
-loc_NTInit()
+loc_NTInit(void)
 {
     int rc;
     WORD wVersionRequested;
@@ -555,8 +563,8 @@ loc_NTInit()
     }
 }
 
-void
-loc_NTTerm()
+static void
+loc_NTTerm(void)
 {
     WSACleanup();
 }