Mikolaj Zalewski : advapi32: Return an error if we try to start an already running service.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Aug 23 07:26:06 CDT 2007


Module: wine
Branch: master
Commit: 346fbb32e109c20ed7367e92a4a72c52c1f077c0
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=346fbb32e109c20ed7367e92a4a72c52c1f077c0

Author: Mikolaj Zalewski <mikolajz at google.com>
Date:   Wed Aug 22 18:08:29 2007 -0700

advapi32: Return an error if we try to start an already running service.

---

 dlls/advapi32/service.c |   21 ++++++++++++++++-----
 1 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/dlls/advapi32/service.c b/dlls/advapi32/service.c
index 458653c..f922e62 100644
--- a/dlls/advapi32/service.c
+++ b/dlls/advapi32/service.c
@@ -454,7 +454,8 @@ static BOOL service_handle_start(HANDLE pipe, service_data *service, DWORD count
 
     if (service->thread)
     {
-        ERR("service is not stopped\n");
+        WARN("service is not stopped\n");
+        result = ERROR_SERVICE_ALREADY_RUNNING;
         goto end;
     }
 
@@ -503,7 +504,14 @@ static BOOL service_send_start_message(HANDLE pipe, LPCWSTR *argv, DWORD argc)
 
     r = WriteFile(pipe, ssi, sizeof *ssi + len*sizeof(WCHAR), &count, NULL);
     if (r)
+    {
         r = ReadFile(pipe, &result, sizeof result, &count, NULL);
+        if (r && result)
+        {
+            SetLastError(result);
+            r = FALSE;
+        }
+    }
 
     HeapFree(GetProcessHeap(),0,ssi);
 
@@ -1764,11 +1772,14 @@ BOOL WINAPI StartServiceW(SC_HANDLE hService, DWORD dwNumServiceArgs,
         CloseHandle(handle);
     }
 
-    handle = service_open_pipe(hsvc->name);
-    if (handle != INVALID_HANDLE_VALUE)
+    if (r)
     {
-        service_set_processID(handle, dwProcessId, &dwResult);
-        CloseHandle(handle);
+        handle = service_open_pipe(hsvc->name);
+        if (handle != INVALID_HANDLE_VALUE)
+        {
+            service_set_processID(handle, dwProcessId, &dwResult);
+            CloseHandle(handle);
+        }
     }
 
     UnlockServiceDatabase( hLock );




More information about the wine-cvs mailing list