[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r2421 - GNUnet/src/server,
durner <=