From 0fbe1f944f4346d000acfc9fc557958120c3b70d Mon Sep 17 00:00:00 2001 From: Simo Sorce Date: Mon, 20 Dec 2010 21:19:36 -0500 Subject: Fix race condition in installation due to use of asynchronous search. Fixes: https://fedorahosted.org/freeipa/ticket/640 --- ipaserver/install/krbinstance.py | 31 ++++++++++++------------------- 1 file changed, 12 insertions(+), 19 deletions(-) (limited to 'ipaserver/install') 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") -- cgit