From 9e3a6c6cc3dd2233b82bebc79acf3f63cfd2a433 Mon Sep 17 00:00:00 2001
From: Christophe Simonis <chs@openerp.com>
Date: Fri, 30 Nov 2012 12:38:28 +0100
Subject: [PATCH] [FIX] win32 service: configure service via sc.exe

bzr revid: chs@openerp.com-20121130113828-abweveb1ryzptvhf
---
 win32/OpenERPServerService.py | 41 +++++++++++++++++++----------------
 1 file changed, 22 insertions(+), 19 deletions(-)

diff --git a/win32/OpenERPServerService.py b/win32/OpenERPServerService.py
index c529b582ba44..3f86c40aa4be 100644
--- a/win32/OpenERPServerService.py
+++ b/win32/OpenERPServerService.py
@@ -74,26 +74,29 @@ class OpenERPServerService(win32serviceutil.ServiceFramework):
 def option_handler(opts):
     # configure the service to auto restart on failures...
     service_name = OpenERPServerService._svc_name
+    restart_msg = "Restarting %s" % (OpenERPServerService._svc_display_name_,)
 
-    hscm = win32service.OpenSCManager(None, None, win32service.SC_MANAGER_ALL_ACCESS)
-    try:
-        hs = win32serviceutil.SmartOpenService(hscm, service_name, win32service.SERVICE_ALL_ACCESS)
-        try:
-            service_failure_actions = {
-                'ResetPeriod': 0,   # Time in ms after which to reset the failure count to zero.
-                'RebootMsg': u'',   # Not using reboot option
-                'Command': u'',     # Not using run-command option
-                'Actions': [
-                    (win32service.SC_ACTION_RESTART, 10),    # action, delay in ms
-                    (win32service.SC_ACTION_RESTART, 10),
-                    (win32service.SC_ACTION_RESTART, 10),
-                ]
-            }
-            win32service.ChangeServiceConfig2(hs, win32service.SERVICE_CONFIG_FAILURE_ACTIONS, service_failure_actions)
-        finally:
-            win32service.CloseServiceHandle(hs)
-    finally:
-        win32service.CloseServiceHandle(hscm)
+    subprocess.call('sc failure %s reset= 0 reboot= %r actions= reboot/0/reboot/0/reboot/0' % (service_name, restart_msg))
+
+    # hscm = win32service.OpenSCManager(None, None, win32service.SC_MANAGER_ALL_ACCESS)
+    # try:
+    #     hs = win32serviceutil.SmartOpenService(hscm, service_name, win32service.SERVICE_ALL_ACCESS)
+    #     try:
+    #         service_failure_actions = {
+    #             'ResetPeriod': 0,   # Time in ms after which to reset the failure count to zero.
+    #             'RebootMsg': u'',   # Not using reboot option
+    #             'Command': u'',     # Not using run-command option
+    #             'Actions': [
+    #                 (win32service.SC_ACTION_RESTART, 10),    # action, delay in ms
+    #                 (win32service.SC_ACTION_RESTART, 10),
+    #                 (win32service.SC_ACTION_RESTART, 10),
+    #             ]
+    #         }
+    #         win32service.ChangeServiceConfig2(hs, win32service.SERVICE_CONFIG_FAILURE_ACTIONS, service_failure_actions)
+    #     finally:
+    #         win32service.CloseServiceHandle(hs)
+    # finally:
+    #     win32service.CloseServiceHandle(hscm)
 
 
 if __name__ == '__main__':
-- 
GitLab