diff --git a/SoObjects/SOGo/SOGoDomainDefaults.h b/SoObjects/SOGo/SOGoDomainDefaults.h index 557c86002..694714ae6 100644 --- a/SoObjects/SOGo/SOGoDomainDefaults.h +++ b/SoObjects/SOGo/SOGoDomainDefaults.h @@ -43,6 +43,7 @@ - (NSString *) mailDomain; - (NSString *) imapServer; - (NSString *) sieveServer; +- (NSString *) imapCASServiceName; - (NSString *) imapAclStyle; - (NSString *) imapAclGroupIdPrefix; - (NSString *) imapFolderSeparator; diff --git a/SoObjects/SOGo/SOGoDomainDefaults.m b/SoObjects/SOGo/SOGoDomainDefaults.m index 9a4747eca..98e675ddf 100644 --- a/SoObjects/SOGo/SOGoDomainDefaults.m +++ b/SoObjects/SOGo/SOGoDomainDefaults.m @@ -123,6 +123,11 @@ return [self stringForKey: @"SOGoSieveServer"]; } +- (NSString *) imapCASServiceName +{ + return [self objectForKey: @"SOGoIMAPCASServiceName"]; +} + #warning should be removed when we make use of imap namespace - (NSString *) imapAclStyle { diff --git a/SoObjects/SOGo/SOGoWebAuthenticator.m b/SoObjects/SOGo/SOGoWebAuthenticator.m index 5da053328..c60ac7732 100644 --- a/SoObjects/SOGo/SOGoWebAuthenticator.m +++ b/SoObjects/SOGo/SOGoWebAuthenticator.m @@ -269,12 +269,13 @@ forceRenew: (BOOL) renew { NSString *authType, *password; + SOGoSystemDefaults *sd; password = [self passwordInContext: context]; if ([password length]) { - authType = [[SOGoSystemDefaults sharedSystemDefaults] - authenticationType]; + sd = [SOGoSystemDefaults sharedSystemDefaults]; + authType = [sd authenticationType]; if ([authType isEqualToString: @"cas"]) { SOGoCASSession *session; @@ -283,13 +284,18 @@ session = [SOGoCASSession CASSessionWithIdentifier: password fromProxy: NO]; - // We must NOT assume the scheme exists - scheme = [server scheme]; + service = [sd imapCASServiceName]; // try configured service first + if (!service) + { + // We must NOT assume the scheme exists + scheme = [server scheme]; - if (!scheme) - scheme = @"imap"; + if (!scheme) + scheme = @"imap"; - service = [NSString stringWithFormat: @"%@://%@", scheme, [server host]]; + service = [NSString stringWithFormat: @"%@://%@", + scheme, [server host]]; + } if (renew) [session invalidateTicketForService: service];