s4:provisionbackend Don't loop forever waiting for OpenLDAP
authorAndrew Bartlett <abartlet@samba.org>
Wed, 28 Apr 2010 00:39:05 +0000 (10:39 +1000)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 28 Apr 2010 00:39:57 +0000 (10:39 +1000)
We need to give a good error when we can't get OpenLDAP to accept our
connections.

Andrew Bartlett

source4/scripting/python/samba/provisionbackend.py

index 25e416ce043915d157a586a6ba68eb3dff8123fc..8d035ab670cecaed43a32031814fa6c346f8f233 100644 (file)
@@ -222,6 +222,7 @@ class LDAPBackend(ProvisionBackend):
         self.slapd = subprocess.Popen(self.slapd_provision_command,
             close_fds=True, shell=False)
     
+        count = 0
         while self.slapd.poll() is None:
             # Wait until the socket appears
             try:
@@ -232,6 +233,11 @@ class LDAPBackend(ProvisionBackend):
                 return
             except LdbError:
                 time.sleep(1)
+                count = count + 1
+
+                if count > 15:
+                    self.message("Could not connect to slapd started with: %s" %  "\'" + "\' \'".join(self.slapd_provision_command) + "\'")
+                    raise ProvisioningError("slapd never accepted a connection within 15 seconds of starting")
 
         self.message("Could not start slapd with: %s" %  "\'" + "\' \'".join(self.slapd_provision_command) + "\'")
         raise ProvisioningError("slapd died before we could make a connection to it")