X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fnt_svc.c;h=9be80c9e409dd34d222957872626591979fc0b99;hb=e25f6ef0cdd1780577dffeaca8ba8b19b5697880;hp=1fd82abacb6c6906d9777f345b4c1efb1d131932;hpb=2e5e4c3f20045ba6a3fea20f7b69e1dcd07bfcc8;p=openldap diff --git a/servers/slapd/nt_svc.c b/servers/slapd/nt_svc.c index 1fd82abacb..9be80c9e40 100644 --- a/servers/slapd/nt_svc.c +++ b/servers/slapd/nt_svc.c @@ -1,6 +1,6 @@ /* $OpenLDAP$ */ /* - * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved. + * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved. * COPYING RESTRICTIONS APPLY, see COPYRIGHT file */ @@ -8,6 +8,7 @@ #include #include #include "slap.h" +#include "lutil.h" #ifdef HAVE_NT_SERVICE_MANAGER @@ -18,12 +19,13 @@ 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 ) { int length; char filename[MAX_PATH], *fname_start; - extern int is_NT_Service; /* * Because the service was registered as SERVICE_WIN32_OWN_PROCESS, @@ -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 );