diff --git a/ChangeLog b/ChangeLog index 1e0815c3b..dfc208eb6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,14 @@ 2010-08-20 Wolfgang Sourdeau + * SoObjects/SOGo/SOGoDAVAuthenticator.m (-checkLogin:password:): + same as below. + + * SoObjects/SOGo/SOGoUser.m (-initWithLogin:roles:trust:): same as + below. + + * SoObjects/SOGo/SOGoGCSFolder.m (_deduceObjectNamesFromURLs:): + accept "@" chars encoded as "%40". + * SoObjects/Contacts/SOGoContactFolders.m (-appendSystemSources): append nothing if used from an iPhone. diff --git a/SoObjects/SOGo/SOGoDAVAuthenticator.m b/SoObjects/SOGo/SOGoDAVAuthenticator.m index 0700d21cd..a624d28d4 100644 --- a/SoObjects/SOGo/SOGoDAVAuthenticator.m +++ b/SoObjects/SOGo/SOGoDAVAuthenticator.m @@ -58,11 +58,13 @@ BOOL rc; perr = PolicyNoError; - rc = ([[SOGoUserManager sharedUserManager] checkLogin: _login - password: _pwd - perr: &perr - expire: &expire - grace: &grace] + rc = ([[SOGoUserManager sharedUserManager] + checkLogin: [_login stringByReplacingString: @"%40" + withString: @"@"] + password: _pwd + perr: &perr + expire: &expire + grace: &grace] && perr == PolicyNoError); if (!rc) { diff --git a/SoObjects/SOGo/SOGoGCSFolder.m b/SoObjects/SOGo/SOGoGCSFolder.m index 82df98235..35ada8f68 100644 --- a/SoObjects/SOGo/SOGoGCSFolder.m +++ b/SoObjects/SOGo/SOGoGCSFolder.m @@ -1765,7 +1765,7 @@ static NSArray *childRecordFields = nil; - (NSDictionary *) _deduceObjectNamesFromURLs: (NSArray *) urls { unsigned int count, max; - NSString *url, *componentURLPath, *cName, *baseURLString; + NSString *url, *currentURL, *componentURLPath, *cName, *baseURLString; NSMutableDictionary *cNames; NSURL *componentURL, *baseURL; NSArray *urlComponents; @@ -1777,9 +1777,12 @@ static NSArray *childRecordFields = nil; for (count = 0; count < max; count++) { + currentURL + = [[urls objectAtIndex: count] stringByReplacingString: @"%40" + withString: @"@"]; url = [NSString stringWithFormat: @"%@/%@", - [[urls objectAtIndex: count] stringByDeletingLastPathComponent], - [[[urls objectAtIndex: count] lastPathComponent] stringByEscapingURL]]; + [currentURL stringByDeletingLastPathComponent], + [[currentURL lastPathComponent] stringByEscapingURL]]; componentURL = [[NSURL URLWithString: url relativeToURL: baseURL] standardizedURL]; componentURLPath = [componentURL absoluteString]; diff --git a/SoObjects/SOGo/SOGoUser.m b/SoObjects/SOGo/SOGoUser.m index e5c337430..5b0b83d52 100644 --- a/SoObjects/SOGo/SOGoUser.m +++ b/SoObjects/SOGo/SOGoUser.m @@ -138,6 +138,8 @@ realUID = newLogin; else { + newLogin = [newLogin stringByReplacingString: @"%40" + withString: @"@"]; if (b) realUID = newLogin; else