gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r2421 - GNUnet/src/server


From: durner
Subject: [GNUnet-SVN] r2421 - GNUnet/src/server
Date: Sun, 25 Dec 2005 12:41:43 -0800 (PST)

Author: durner
Date: 2005-12-25 12:41:35 -0800 (Sun, 25 Dec 2005)
New Revision: 2421

Modified:
   GNUnet/src/server/gnunetd.c
   GNUnet/src/server/startup.c
   GNUnet/src/server/startup.h
Log:
fix MinGW

Modified: GNUnet/src/server/gnunetd.c
===================================================================
--- GNUnet/src/server/gnunetd.c 2005-12-25 16:01:17 UTC (rev 2420)
+++ GNUnet/src/server/gnunetd.c 2005-12-25 20:41:35 UTC (rev 2421)
@@ -40,39 +40,10 @@
 
 #ifdef MINGW
 /**
- * Windows service information
- */
-SERVICE_STATUS theServiceStatus;
-SERVICE_STATUS_HANDLE hService;
-
-/**
- * This function is called from the Windows Service Control Manager
- * when a service has to shutdown
- */
-void WINAPI ServiceCtrlHandler(DWORD dwOpcode) {
-  if (dwOpcode == SERVICE_CONTROL_STOP)
-    win_shutdown_gnunetd(SERVICE_CONTROL_STOP);
-}
-
-/**
  * Main method of the windows service
  */
 void WINAPI ServiceMain(DWORD argc, LPSTR *argv) {
-  memset(&theServiceStatus, 0, sizeof(theServiceStatus));
-  theServiceStatus.dwServiceType = SERVICE_WIN32;
-  theServiceStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP;
-  theServiceStatus.dwCurrentState = SERVICE_RUNNING;
-
-  hService = GNRegisterServiceCtrlHandler("GNUnet", ServiceCtrlHandler);
-  if (! hService)
-    return;
-
-  GNSetServiceStatus(hService, &theServiceStatus);
-
-  gnunet_main();
-
-  theServiceStatus.dwCurrentState = SERVICE_STOPPED;
-  GNSetServiceStatus(hService, &theServiceStatus);
+  win_service_main(gnunet_main);
 }
 #endif
 

Modified: GNUnet/src/server/startup.c
===================================================================
--- GNUnet/src/server/startup.c 2005-12-25 16:01:17 UTC (rev 2420)
+++ GNUnet/src/server/startup.c 2005-12-25 20:41:35 UTC (rev 2421)
@@ -62,8 +62,11 @@
 
 
 #ifdef MINGW
-extern SERVICE_STATUS theServiceStatus;
-extern SERVICE_STATUS_HANDLE hService;
+  /**
+   * Windows service information
+   */
+  static SERVICE_STATUS theServiceStatus;
+  static SERVICE_STATUS_HANDLE hService;
 #endif
 
 /**
@@ -96,13 +99,62 @@
             NULL);
 }
 
+#ifdef MINGW
+static void shutdown_gnunetd(int signum);
+
+BOOL WINAPI win_shutdown_gnunetd(DWORD dwCtrlType)
+{
+  switch(dwCtrlType)
+  {
+    case CTRL_C_EVENT:
+    case CTRL_CLOSE_EVENT:
+    case CTRL_SHUTDOWN_EVENT:
+    case CTRL_LOGOFF_EVENT:
+    case SERVICE_CONTROL_STOP:
+      shutdown_gnunetd(dwCtrlType);
+  }
+
+  return TRUE;
+}
+
 /**
+ * This function is called from the Windows Service Control Manager
+ * when a service has to shutdown
+ */
+void WINAPI ServiceCtrlHandler(DWORD dwOpcode) {
+  if (dwOpcode == SERVICE_CONTROL_STOP)
+    win_shutdown_gnunetd(SERVICE_CONTROL_STOP);
+}
+
+/**
+ * called by gnunetd.c::ServiceMain()
+ */
+void win_service_main(void (*gn_main)()) {
+  memset(&theServiceStatus, 0, sizeof(theServiceStatus));
+  theServiceStatus.dwServiceType = SERVICE_WIN32;
+  theServiceStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP;
+  theServiceStatus.dwCurrentState = SERVICE_RUNNING;
+
+  hService = GNRegisterServiceCtrlHandler("GNUnet", ServiceCtrlHandler);
+  if (! hService)
+    return;
+
+  GNSetServiceStatus(hService, &theServiceStatus);
+
+  gn_main();
+
+  theServiceStatus.dwCurrentState = SERVICE_STOPPED;
+  GNSetServiceStatus(hService, &theServiceStatus);
+}
+#endif
+
+/**
  * Try a propper shutdown of gnunetd.
  */
 static void shutdown_gnunetd(int signum) {
 
 #ifdef MINGW
-if (win_service)
+if (win_service())
 {
   /* If GNUnet runs as service, only the
      Service Control Manager is allowed
@@ -157,23 +209,6 @@
   return ret;
 }
 
-#ifdef MINGW
-BOOL WINAPI win_shutdown_gnunetd(DWORD dwCtrlType)
-{
-  switch(dwCtrlType)
-  {
-    case CTRL_C_EVENT:
-    case CTRL_CLOSE_EVENT:
-    case CTRL_SHUTDOWN_EVENT:
-    case CTRL_LOGOFF_EVENT:
-    case SERVICE_CONTROL_STOP:
-      shutdown_gnunetd(dwCtrlType);
-  }
-
-  return TRUE;
-}
-#endif
-
 /**
  * Initialize signal handlers
  */

Modified: GNUnet/src/server/startup.h
===================================================================
--- GNUnet/src/server/startup.h 2005-12-25 16:01:17 UTC (rev 2420)
+++ GNUnet/src/server/startup.h 2005-12-25 20:41:35 UTC (rev 2421)
@@ -97,6 +97,7 @@
 
 #ifdef MINGW
 BOOL WINAPI win_shutdown_gnunetd(DWORD dwCtrlType);
+void win_service_main(void (*gn_main)());
 #endif
 
 #endif





reply via email to

[Prev in Thread] Current Thread [Next in Thread]