// Token: 0x060002D1 RID: 721 RVA: 0x00011000 File Offset: 0x0000F200 internal bool IsPolicyValid(ProvisionedFolder provisionedFolder, ContentSetting policy, string itemClass, MailboxDataForFolders mailboxData) { if (!ElcPolicySettings.ArePolicyPropertiesValid(policy, TraceContext.Get(), this.mailboxSession.MailboxOwner.MailboxInfo.PrimarySmtpAddress.ToString())) { return(false); } FolderProcessor.CircularPolicyType circularPolicyType = this.LookForCircularPolicies(provisionedFolder, policy, itemClass, mailboxData); if (circularPolicyType == FolderProcessor.CircularPolicyType.BadCycle) { throw new SkipException(Strings.descCycleInPolicies(this.mailboxSession.MailboxOwner.MailboxInfo.PrimarySmtpAddress.ToString(), policy.Name)); } return(true); }
// Token: 0x060002D8 RID: 728 RVA: 0x00011C28 File Offset: 0x0000FE28 private FolderProcessor.CircularPolicyType LookForCircularPolicies(ProvisionedFolder provisionedFolder, ContentSetting policy, string itemClass, MailboxDataForFolders mailboxData) { if (provisionedFolder.ValidatedPolicies.Contains(itemClass)) { return(FolderProcessor.CircularPolicyType.NoCycle); } List <FolderProcessor.FolderPolicy> list = new List <FolderProcessor.FolderPolicy>(); list.Add(new FolderProcessor.FolderPolicy(provisionedFolder, policy)); while (policy.RetentionAction == RetentionActionType.MoveToFolder || policy.RetentionAction == RetentionActionType.MoveToDeletedItems) { ProvisionedFolder destinationFolder = this.GetDestinationFolder(policy, mailboxData); if (destinationFolder == null) { FolderProcessor.Tracer.TraceDebug <object, string>((long)this.GetHashCode(), "{0}: The destination folder of Policy '{1}' is not in the list of provisioned folders. Quit.", TraceContext.Get(), policy.Name); } else { FolderProcessor.CircularPolicyType circularPolicyType = this.CheckDestinationFolder(list, destinationFolder, policy); if (circularPolicyType != FolderProcessor.CircularPolicyType.NoCycle) { return(circularPolicyType); } ContentSetting destinationPolicy = this.GetDestinationPolicy(destinationFolder, itemClass); if (destinationPolicy != null) { list.Add(new FolderProcessor.FolderPolicy(destinationFolder, destinationPolicy)); policy = destinationPolicy; continue; } FolderProcessor.Tracer.TraceDebug <object, string, string>((long)this.GetHashCode(), "{0}: The destination folder '{1}' of Policy '{2}' does not have a valid policy on it. Quit.", TraceContext.Get(), destinationFolder.FullFolderPath, policy.Name); } IL_E8: provisionedFolder.ValidatedPolicies.Add(itemClass); return(FolderProcessor.CircularPolicyType.NoCycle); } FolderProcessor.Tracer.TraceDebug <object, string>((long)this.GetHashCode(), "{0}: The Policy '{1}' is not a MoveTo policy. Quit", TraceContext.Get(), policy.Name); goto IL_E8; }