]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/nt_svc.c
Experiment with busy loop protection...
[openldap] / servers / slapd / nt_svc.c
index 5bd46f9636430d6679947360b556faa312c8b417..40a349ec4a0d90cb6e1aeba1fef28360625330d9 100644 (file)
@@ -18,6 +18,8 @@ void WINAPI ServiceMain( DWORD argc, LPTSTR *argv );
 int srv_install( char* service, char * displayName, char* filename,
                 BOOL auto_start );
 int srv_remove ( char* service, char* filename );
+DWORD svc_installed (LPTSTR lpszServiceName, LPTSTR lpszBinaryPathName);
+DWORD svc_running (LPTSTR lpszServiceName);
 
 int main( int argc, LPTSTR *argv )
 {
@@ -99,7 +101,9 @@ int main( int argc, LPTSTR *argv )
        }
 
        puts( "starting slapd..." );
-       if ( !StartServiceCtrlDispatcher(DispatchTable) )
+       if (svc_installed(SERVICE_NAME, NULL) != 0
+               || svc_running(SERVICE_NAME) == 1
+               || StartServiceCtrlDispatcher(DispatchTable) == 0 )
        {
                is_NT_Service = 0;
                ServiceMain( argc, argv );