diff --git a/ActiveSync/SOGoActiveSyncDispatcher.m b/ActiveSync/SOGoActiveSyncDispatcher.m index 0f1b98642..a0a2e61dc 100644 --- a/ActiveSync/SOGoActiveSyncDispatcher.m +++ b/ActiveSync/SOGoActiveSyncDispatcher.m @@ -3093,7 +3093,7 @@ void handle_eas_terminate(int signum) andElement = [(id)[theDocumentElement getElementsByTagName: @"And"] lastObject]; if (andElement) { - EOQualifier *subjectQualifier, *senderQualifier, *fetchQualifier, *notDeleted, *greaterThanQualifier, *orQualifier; + EOQualifier *subjectQualifier, *senderQualifier, *fetchQualifier, *notDeleted, *greaterThanQualifier, *searchQualifier; NSString *query; id o; @@ -3115,12 +3115,16 @@ void handle_eas_terminate(int signum) } notDeleted = [EOQualifier qualifierWithQualifierFormat: @"(not (flags = %@))", @"deleted"]; - subjectQualifier = [EOQualifier qualifierWithQualifierFormat: [NSString stringWithFormat: @"(%@ doesContain: '%@')", @"subject", query]]; - senderQualifier = [EOQualifier qualifierWithQualifierFormat: [NSString stringWithFormat: @"(%@ doesContain: '%@')", @"from", query]]; - orQualifier = [[EOOrQualifier alloc] initWithQualifiers: subjectQualifier, senderQualifier, nil]; + if ([[SOGoSystemDefaults sharedSystemDefaults] easSearchInBody]) { + searchQualifier = [EOQualifier qualifierWithQualifierFormat: [NSString stringWithFormat: @"(%@ doesContain: '%@')", @"text", query]]; + } else { + subjectQualifier = [EOQualifier qualifierWithQualifierFormat: [NSString stringWithFormat: @"(%@ doesContain: '%@')", @"subject", query]]; + senderQualifier = [EOQualifier qualifierWithQualifierFormat: [NSString stringWithFormat: @"(%@ doesContain: '%@')", @"from", query]]; + searchQualifier = [[EOOrQualifier alloc] initWithQualifiers: subjectQualifier, senderQualifier, nil]; + } - fetchQualifier = [[EOAndQualifier alloc] initWithQualifiers: notDeleted, orQualifier, greaterThanQualifier, nil]; + fetchQualifier = [[EOAndQualifier alloc] initWithQualifiers: notDeleted, searchQualifier, greaterThanQualifier, nil]; return [fetchQualifier autorelease]; } diff --git a/Documentation/SOGoInstallationGuide.asciidoc b/Documentation/SOGoInstallationGuide.asciidoc index 53fc877c3..68a822683 100644 --- a/Documentation/SOGoInstallationGuide.asciidoc +++ b/Documentation/SOGoInstallationGuide.asciidoc @@ -2855,6 +2855,11 @@ Defaults to `NO`, which means no logging is performed. for EAS Search operations in the GAL. If not set, it defaults to `102400` bytes, or 100 KB. + +|S |SOGoEASSearchInBody +|Parameter used to enable EAS Search operation in all parts of a message. + +Defaults to `NO`, which means to search only in Subject- and From-header. |======================================================================= Please be aware of the following limitations: diff --git a/SoObjects/SOGo/SOGoSystemDefaults.h b/SoObjects/SOGo/SOGoSystemDefaults.h index db3222d6d..7087993c1 100644 --- a/SoObjects/SOGo/SOGoSystemDefaults.h +++ b/SoObjects/SOGo/SOGoSystemDefaults.h @@ -112,6 +112,7 @@ - (int) maximumSyncWindowSize; - (int) maximumSyncResponseSize; - (int) maximumPictureSize; +- (BOOL) easSearchInBody; @end diff --git a/SoObjects/SOGo/SOGoSystemDefaults.m b/SoObjects/SOGo/SOGoSystemDefaults.m index ea619ed45..5bf172d2f 100644 --- a/SoObjects/SOGo/SOGoSystemDefaults.m +++ b/SoObjects/SOGo/SOGoSystemDefaults.m @@ -730,6 +730,11 @@ _injectConfigurationFromFile (NSMutableDictionary *defaultsDict, return v; } +- (BOOL) easSearchInBody +{ + return [self boolForKey: @"SOGoEASSearchInBody"]; +} + // // See https://msdn.microsoft.com/en-us/library/gg672032(v=exchg.80).aspx //