Index: password.py =================================================================== --- password.py (Revision 79693) +++ password.py (Arbeitskopie) @@ -156,13 +156,13 @@ return info -def get_password_from_ad(connector, user_dn): +def get_password_from_ad(connector, user_dn, reconnect=False): _d = ud.function('ldap.ad.get_password_from_ad') ud.debug(ud.LDAP, ud.INFO, "get_password_from_ad: Read password from AD: %s" % user_dn) nt_hash = None - if not connector.drs: + if not connector.drs or reconnect: connector.open_drs_connection() req8 = drsuapi.DsGetNCChangesRequest8() @@ -378,7 +378,10 @@ ud.debug(ud.LDAP, ud.INFO, "password_sync: AD pwdlastset: %s (original (%s))" % (ad_password_last_set, pwdLastSet)) ud.debug(ud.LDAP, ud.INFO, "password_sync: UCS pwdlastset: %s" % (sambaPwdLastSet)) - res = get_password_from_ad(connector, univention.connector.ad.compatible_modstring(object['dn'])) + try: + res = get_password_from_ad(connector, univention.connector.ad.compatible_modstring(object['dn'])) + except: + res = get_password_from_ad(connector, univention.connector.ad.compatible_modstring(object['dn']), reconnect=True) if res: ntPwd_ucs = ''