summaryrefslogtreecommitdiffstats
path: root/ipaserver
diff options
context:
space:
mode:
authorSimo Sorce <ssorce@redhat.com>2010-12-20 21:19:36 -0500
committerAdam Young <ayoung@redhat.com>2010-12-21 00:23:03 -0500
commit0fbe1f944f4346d000acfc9fc557958120c3b70d (patch)
treee79ffc99213df76d0b566a49e08e006176d4b289 /ipaserver
parent023f92f5170c2027561ada2821b254120a405e41 (diff)
downloadfreeipa-0fbe1f944f4346d000acfc9fc557958120c3b70d.tar.gz
freeipa-0fbe1f944f4346d000acfc9fc557958120c3b70d.tar.xz
freeipa-0fbe1f944f4346d000acfc9fc557958120c3b70d.zip
Fix race condition in installation due to use of asynchronous search.
Fixes: https://fedorahosted.org/freeipa/ticket/640
Diffstat (limited to 'ipaserver')
-rw-r--r--ipaserver/install/krbinstance.py31
1 files changed, 12 insertions, 19 deletions
diff --git a/ipaserver/install/krbinstance.py b/ipaserver/install/krbinstance.py
index f0078e968..3f524d741 100644
--- a/ipaserver/install/krbinstance.py
+++ b/ipaserver/install/krbinstance.py
@@ -268,28 +268,21 @@ class KrbInstance(service.Service):
def __configure_sasl_mappings(self):
# we need to remove any existing SASL mappings in the directory as otherwise they
- # they may conflict. There is no way to define the order they are used in atm.
+ # they may conflict.
- # FIXME: for some reason IPAdmin dies here, so we switch
- # it out for a regular ldapobject.
- conn = self.conn
- self.conn = ldapobject.SimpleLDAPObject("ldap://127.0.0.1/")
- self.conn.bind("cn=directory manager", self.admin_password)
try:
- msgid = self.conn.search("cn=mapping,cn=sasl,cn=config", ldap.SCOPE_ONELEVEL, "(objectclass=nsSaslMapping)")
- res = self.conn.result(msgid)
- for r in res[1]:
- self.conn.delete_s(r[0])
- #except LDAPError, e:
- # logging.critical("Error during SASL mapping removal: %s" % str(e))
- except Exception, e:
- logging.critical("Could not connect to the Directory Server on %s" % self.fqdn)
+ res = self.conn.search_s("cn=mapping,cn=sasl,cn=config",
+ ldap.SCOPE_ONELEVEL,
+ "(objectclass=nsSaslMapping)")
+ for r in res:
+ try:
+ self.conn.delete_s(r.dn)
+ except LDAPError, e:
+ logging.critical("Error during SASL mapping removal: %s" % str(e))
+ raise e
+ except LDAPError, e:
+ logging.critical("Error while enumerating SASL mappings %s" % str(e))
raise e
- print type(e)
- print dir(e)
- raise e
-
- self.conn = conn
entry = ipaldap.Entry("cn=Full Principal,cn=mapping,cn=sasl,cn=config")
entry.setValues("objectclass", "top", "nsSaslMapping")