diff --git a/SoObjects/SOGo/LDAPSource.m b/SoObjects/SOGo/LDAPSource.m index 1795dfbf5..722ffd4e7 100644 --- a/SoObjects/SOGo/LDAPSource.m +++ b/SoObjects/SOGo/LDAPSource.m @@ -2306,7 +2306,7 @@ _makeLDAPChanges (NGLdapConnection *ldapConnection, - (NSArray *) membersForGroupWithUID: (NSString *) uid { - NSMutableArray *dns, *uids; + NSMutableArray *dns, *uids, *userLogins; NSString *dn, *login; SOGoUserManager *um; NSDictionary *d, *contactInfos; @@ -2327,6 +2327,7 @@ _makeLDAPChanges (NGLdapConnection *ldapConnection, members = [NSMutableArray new]; uids = [NSMutableArray array]; dns = [NSMutableArray array]; + userLogins = [NSMutableArray array]; // We check if it's a static group // Fetch "members" - we get DNs @@ -2358,6 +2359,13 @@ _makeLDAPChanges (NGLdapConnection *ldapConnection, pool = [NSAutoreleasePool new]; dn = [dns objectAtIndex: i]; login = [um getLoginForDN: [dn lowercaseString]]; + if([userLogins containsObject: login]) + { + [pool release]; + continue; //user alrady fetch + } + if(login != nil) + [userLogins addObject: login]; user = [SOGoUser userWithLogin: login roles: nil]; if (user) { @@ -2385,6 +2393,13 @@ _makeLDAPChanges (NGLdapConnection *ldapConnection, { pool = [NSAutoreleasePool new]; login = [uids objectAtIndex: i]; + if([userLogins containsObject: login]) + { + [pool release]; + continue; //user alrady fetch + } + if(login != nil) + [userLogins addObject: login]; user = [SOGoUser userWithLogin: login roles: nil]; if (user) { @@ -2456,4 +2471,4 @@ _makeLDAPChanges (NGLdapConnection *ldapConnection, return rc; } -@end +@end \ No newline at end of file diff --git a/SoObjects/SOGo/SOGoUserManager.m b/SoObjects/SOGo/SOGoUserManager.m index 3694facbf..c265f29ad 100644 --- a/SoObjects/SOGo/SOGoUserManager.m +++ b/SoObjects/SOGo/SOGoUserManager.m @@ -521,7 +521,7 @@ static const NSString *kObfuscatedSecondaryEmailKey = @"obfuscatedSecondaryEmail perr: perr expire: expire grace: grace]; - if ([sogoSource userPasswordPolicy] && [[sogoSource userPasswordPolicy] count] > 0) { + if (_additionalInfo && *_additionalInfo && [sogoSource userPasswordPolicy] && [[sogoSource userPasswordPolicy] count] > 0) { [*_additionalInfo setObject:[sogoSource userPasswordPolicy] forKey:@"userPolicies"]; } }