Added bend_start, bend_stop handlers and removed pre_init.
authorAdam Dickmeiss <adam@indexdata.dk>
Thu, 10 Jun 1999 11:45:30 +0000 (11:45 +0000)
committerAdam Dickmeiss <adam@indexdata.dk>
Thu, 10 Jun 1999 11:45:30 +0000 (11:45 +0000)
Handlers bend_start/bend_stop are called when service/daemon is
started/stopped.

include/statserv.h
server/service.c
server/statserv.c

index 0326a3b..f27442a 100644 (file)
  * OF THIS SOFTWARE.
  *
  * $Log: statserv.h,v $
- * Revision 1.15  1999-04-16 14:45:55  adam
+ * Revision 1.16  1999-06-10 11:45:30  adam
+ * Added bend_start, bend_stop handlers and removed pre_init.
+ * Handlers bend_start/bend_stop are called when service/daemon is
+ * started/stopped.
+ *
+ * Revision 1.15  1999/04/16 14:45:55  adam
  * Added interface for tcpd wrapper for access control.
  *
  * Revision 1.14  1999/02/02 13:57:32  adam
@@ -103,7 +108,8 @@ typedef struct statserv_options_block
     int maxrecordsize;            /* maximum value for negotiation */
     char configname[ODR_MAXNAME+1];  /* given to the backend in bend_init */
     char setuid[ODR_MAXNAME+1];     /* setuid to this user after binding */
-    void (*pre_init)(struct statserv_options_block *p);
+    void (*bend_start)(struct statserv_options_block *p);
+    void (*bend_stop)(struct statserv_options_block *p);
     int (*options_func)(int argc, char **argv);
     int (*check_ip)(void *cd, const char *addr, int len, int type);
     char daemon_name[128];
index 29e1c7d..b112e2f 100644 (file)
@@ -3,7 +3,12 @@
  *  Based on code written by
  *     Chas Woodfield, Fretwell Downing Datasystems.
  * $Log: service.c,v $
- * Revision 1.2  1999-02-02 13:57:36  adam
+ * Revision 1.3  1999-06-10 11:45:30  adam
+ * Added bend_start, bend_stop handlers and removed pre_init.
+ * Handlers bend_start/bend_stop are called when service/daemon is
+ * started/stopped.
+ *
+ * Revision 1.2  1999/02/02 13:57:36  adam
  * Uses preprocessor define WIN32 instead of WINDOWS to build code
  * for Microsoft WIN32.
  *
@@ -438,8 +443,7 @@ BOOL SetupService(int argc, char *argv[], void *pHandle, LPTSTR pAppName, LPTSTR
         else
         {
             /* Set the console control handler for exiting the program */
-/*            SetConsoleCtrlHandler((PHANDLER_ROUTINE)EventHandlerRoutine, TRUE);
-*/
+            SetConsoleCtrlHandler((PHANDLER_ROUTINE)EventHandlerRoutine, TRUE);
 
             /* Now do the main work */
             ServiceMain(argc, argv);
@@ -469,7 +473,7 @@ BOOL EventHandlerRoutine(DWORD dwCtrlType)
         case CTRL_SHUTDOWN_EVENT: /* A signal that the system sends to all console processes when the system */
             /* We are basically shutting down, so call Service_Delete */
             Service_Delete();
-            return(TRUE);
+            return(FALSE);
             break;
 
         default:
index cdf75c3..e079866 100644 (file)
@@ -7,7 +7,12 @@
  *   Chas Woodfield, Fretwell Downing Datasystems.
  *
  * $Log: statserv.c,v $
- * Revision 1.55  1999-06-10 09:18:54  adam
+ * Revision 1.56  1999-06-10 11:45:30  adam
+ * Added bend_start, bend_stop handlers and removed pre_init.
+ * Handlers bend_start/bend_stop are called when service/daemon is
+ * started/stopped.
+ *
+ * Revision 1.55  1999/06/10 09:18:54  adam
  * Modified so that pre_init is called when service/server is started.
  *
  * Revision 1.54  1999/04/16 14:45:55  adam
@@ -237,7 +242,8 @@ statserv_options_block control_block = {
     1024*1024,                  /* maximum PDU size (approx.) to allow */
     "default-config",           /* configuration name to pass to backend */
     "",                         /* set user id */
-    NULL,                       /* pre init handler */
+    0,                          /* bend_start handler */
+    0,                          /* bend_stop handler */
     check_options,              /* Default routine, for checking the run-time arguments */
     check_ip_tcpd,
     "",
@@ -405,6 +411,8 @@ void statserv_closedown()
             free(pThreadHandles);
         }
 
+       if (control_block.bend_stop)
+           (*control_block.bend_stop)(&control_block);
         /* No longer require the critical section, since all threads are dead */
         DeleteCriticalSection(&Thread_CritSect);
     }
@@ -803,8 +811,8 @@ int statserv_start(int argc, char **argv)
     if (control_block.options_func(argc, argv))
         return(1);
 
-    if (control_block.pre_init)
-        (*control_block.pre_init)(&control_block);
+    if (control_block.bend_start)
+        (*control_block.bend_start)(&control_block);
 #ifndef WIN32
     if (control_block.inetd)
        inetd_connection(control_block.default_proto);