Пример #1
0
        // Token: 0x06000816 RID: 2070 RVA: 0x000272D8 File Offset: 0x000254D8
        internal void GenerateMapiExceptionIfRequired(Guid dbGuid, AmServerName serverName)
        {
            if (!this.IsEnabled)
            {
                return;
            }
            int num = 0;

            this.ReadDbOperationProperty <int>(dbGuid, serverName, "GenerateMapiError", out num, 0);
            if (num == 0)
            {
                return;
            }
            AmTrace.Debug("AmInject: GenerateMapiError enabled for {0},{1}", new object[]
            {
                dbGuid,
                AmServerName.IsNullOrEmpty(serverName) ? "<null>" : serverName.NetbiosName
            });
            int  num2  = 0;
            int  num3  = 0;
            bool flag  = this.ReadDbOperationProperty <int>(dbGuid, serverName, "MapiHResult", out num2, 0);
            bool flag2 = this.ReadDbOperationProperty <int>(dbGuid, serverName, "MapiLowLevelError", out num3, 0);

            if (flag && flag2)
            {
                AmTrace.Debug("AmInject: Generating mapi exception (hr={0}, ec={1})", new object[]
                {
                    num2,
                    num3
                });
                MapiExceptionHelper.ThrowIfError(string.Format("Database operation failed with Mapi error. (hr={0}, ec={1})", num2, num3), num2, num3);
            }
        }
Пример #2
0
        private static bool GetAccountNameAndType(SecurityIdentifier sid, out string domainName, out string accountName)
        {
            string systemName = null;

            byte[] array = new byte[sid.BinaryLength];
            sid.GetBinaryForm(array, 0);
            uint          capacity       = 64U;
            uint          capacity2      = 64U;
            StringBuilder stringBuilder  = new StringBuilder((int)capacity);
            StringBuilder stringBuilder2 = new StringBuilder((int)capacity2);
            int           num            = 0;
            int           num2;

            if (!DatabaseEvent.LookupAccountSid(systemName, array, stringBuilder, ref capacity, stringBuilder2, ref capacity2, out num2) && (num = Marshal.GetLastWin32Error()) == 122)
            {
                stringBuilder  = new StringBuilder((int)capacity);
                stringBuilder2 = new StringBuilder((int)capacity2);
                DatabaseEvent.LookupAccountSid(systemName, array, stringBuilder, ref capacity, stringBuilder2, ref capacity2, out num2);
                num = Marshal.GetLastWin32Error();
            }
            if (num == 0)
            {
                domainName  = stringBuilder2.ToString();
                accountName = stringBuilder.ToString();
                return(true);
            }
            if (num == 8)
            {
                throw MapiExceptionHelper.OutOfMemoryException("LookupAccountSid failure.");
            }
            accountName = "=unknown=";
            domainName  = "=unknown=";
            return(false);
        }
Пример #3
0
 // Token: 0x060020F7 RID: 8439 RVA: 0x00097D88 File Offset: 0x00095F88
 private void CallExRpcWithTimeout(string operationName, TimeSpan timeout, Action exRpcAction)
 {
     try
     {
         InvokeWithTimeout.Invoke(exRpcAction, timeout);
     }
     catch (TimeoutException ex)
     {
         throw MapiExceptionHelper.TimeoutException(ReplayStrings.ReplayTestStoreConnectivityTimedoutException(operationName, ex.Message), ex);
     }
 }
        private static Exception FaultInjectionCallback(string exceptionType)
        {
            LocalizedString localizedString = new LocalizedString("Fault injection.");

            if (exceptionType.Equals("Microsoft.Exchange.Data.Storage.StoragePermanentException", StringComparison.OrdinalIgnoreCase))
            {
                return(new StoragePermanentException(localizedString));
            }
            if (exceptionType.Equals("Microsoft.Exchange.Data.Storage.StorageTransientException", StringComparison.OrdinalIgnoreCase))
            {
                return(new StorageTransientException(localizedString));
            }
            if (exceptionType.Equals("Microsoft.Mapi.MapiExceptionSessionLimit", StringComparison.OrdinalIgnoreCase))
            {
                Exception innerException = MapiExceptionHelper.SessionLimitException(localizedString);
                return(new TooManyObjectsOpenedException(localizedString, innerException));
            }
            if (exceptionType.Equals("Microsoft.Mapi.MapiExceptionUnconfigured", StringComparison.OrdinalIgnoreCase))
            {
                Exception innerException2 = MapiExceptionHelper.UnconfiguredException(localizedString);
                return(new MailboxUnavailableException(localizedString, innerException2));
            }
            if (exceptionType.Equals("CannotGetSiteInfoException", StringComparison.OrdinalIgnoreCase))
            {
                return(new StoragePermanentException(localizedString, new CannotGetSiteInfoException(localizedString)));
            }
            if (exceptionType.Equals("System.ArgumentException", StringComparison.OrdinalIgnoreCase))
            {
                return(new ArgumentException(localizedString));
            }
            if (exceptionType.StartsWith("Microsoft.Mapi.MapiException", StringComparison.OrdinalIgnoreCase))
            {
                return(FaultInjectionHelper.CreateXsoExceptionFromMapiException(exceptionType, localizedString));
            }
            return(new ApplicationException(localizedString));
        }
Пример #5
0
 // Token: 0x060020F5 RID: 8437 RVA: 0x00097D50 File Offset: 0x00095F50
 protected override Exception GetOperationTimedOutException(string operationName, TimeoutException timeoutEx)
 {
     return(MapiExceptionHelper.TimeoutException(ReplayStrings.ReplayTestStoreConnectivityTimedoutException(operationName, timeoutEx.Message), timeoutEx));
 }
Пример #6
0
 // Token: 0x060020F4 RID: 8436 RVA: 0x00097D3D File Offset: 0x00095F3D
 protected override Exception GetOperationCanceledException(string operationName, OperationAbortedException abortedEx)
 {
     return(MapiExceptionHelper.CancelException(ReplayStrings.ReplayStoreOperationAbortedException(operationName), abortedEx));
 }
Пример #7
0
        private static Exception FaultInjectionCallback(string exceptionType)
        {
            LocalizedString localizedString = new LocalizedString("Fault injection.");

            if (exceptionType.Equals("Microsoft.Exchange.Data.Storage.MailboxRules.InvalidRuleException", StringComparison.OrdinalIgnoreCase))
            {
                return(new InvalidRuleException(localizedString));
            }
            if (exceptionType.Equals("Microsoft.Exchange.Data.Storage.StoragePermanentException", StringComparison.OrdinalIgnoreCase))
            {
                return(new StoragePermanentException(localizedString));
            }
            if (exceptionType.Equals("Microsoft.Exchange.Data.Storage.StorageTransientException", StringComparison.OrdinalIgnoreCase))
            {
                return(new StorageTransientException(localizedString));
            }
            if (exceptionType.Equals("Microsoft.Mapi.MapiExceptionSessionLimit", StringComparison.OrdinalIgnoreCase))
            {
                Exception innerException = MapiExceptionHelper.SessionLimitException(localizedString);
                return(new TooManyObjectsOpenedException(localizedString, innerException));
            }
            if (exceptionType.Equals("Microsoft.Mapi.MapiExceptionRpcServerTooBusy", StringComparison.OrdinalIgnoreCase))
            {
                Exception innerException2 = MapiExceptionHelper.RpcServerTooBusyException(localizedString);
                return(new StorageTransientException(localizedString, innerException2));
            }
            if (exceptionType.Equals("Microsoft.Mapi.MapiExceptionNotEnoughMemory", StringComparison.OrdinalIgnoreCase))
            {
                Exception innerException3 = MapiExceptionHelper.NotEnoughMemoryException(localizedString);
                return(new StorageTransientException(localizedString, innerException3));
            }
            if (exceptionType.Equals("Microsoft.Mapi.MapiExceptionMaxThreadsPerMdbExceeded", StringComparison.OrdinalIgnoreCase))
            {
                Exception innerException4 = MapiExceptionHelper.MaxThreadsPerMdbExceededException(localizedString);
                return(new StorageTransientException(localizedString, innerException4));
            }
            if (exceptionType.Equals("Microsoft.Mapi.MapiExceptionMaxThreadsPerSCTExceeded", StringComparison.OrdinalIgnoreCase))
            {
                Exception innerException5 = MapiExceptionHelper.MaxThreadsPerSCTExceededException(localizedString);
                return(new StorageTransientException(localizedString, innerException5));
            }
            if (exceptionType.Equals("Microsoft.Mapi.MapiExceptionUnconfigured", StringComparison.OrdinalIgnoreCase))
            {
                Exception innerException6 = MapiExceptionHelper.UnconfiguredException(localizedString);
                return(new MailboxUnavailableException(localizedString, innerException6));
            }
            if (exceptionType.Equals("Microsoft.Mapi.MapiExceptionUnknownUser", StringComparison.OrdinalIgnoreCase))
            {
                Exception innerException7 = MapiExceptionHelper.UnknownUserException(localizedString);
                return(new StoragePermanentException(localizedString, innerException7));
            }
            if (exceptionType.Equals("CannotGetSiteInfoException", StringComparison.OrdinalIgnoreCase))
            {
                return(new StoragePermanentException(localizedString, new CannotGetSiteInfoException(localizedString)));
            }
            if (exceptionType.Equals("System.ArgumentException", StringComparison.OrdinalIgnoreCase))
            {
                return(new ArgumentException(localizedString));
            }
            if (exceptionType.Equals("Microsoft.Exchange.Data.Directory.ADTransientException", StringComparison.OrdinalIgnoreCase))
            {
                return(new ADTransientException(localizedString));
            }
            if (exceptionType.Equals("StoreDriverAgentTransientException", StringComparison.OrdinalIgnoreCase))
            {
                return(new StoreDriverAgentTransientException(Strings.StoreDriverAgentTransientExceptionEmail));
            }
            if (exceptionType.Equals("UnexpectedMessageCountException", StringComparison.OrdinalIgnoreCase))
            {
                return(new UnexpectedMessageCountException("Fault injection."));
            }
            if (exceptionType.Equals("Microsoft.Exchange.Data.Storage.MailboxInSiteFailoverException", StringComparison.OrdinalIgnoreCase))
            {
                return(new MailboxInSiteFailoverException(localizedString));
            }
            if (exceptionType.Equals("Microsoft.Mapi.MapiExceptionDuplicateDelivery", StringComparison.OrdinalIgnoreCase))
            {
                return(new StoragePermanentException(localizedString, new MapiExceptionDuplicateDelivery(localizedString, 0, 0, null, null)));
            }
            if (exceptionType.Equals("Microsoft.Exchange.MailboxTransport.StoreDriverCommon.SmtpResponseException", StringComparison.OrdinalIgnoreCase))
            {
                return(new SmtpResponseException(AckReason.ApprovalUpdateSuccess, "TestSource"));
            }
            if (exceptionType.Equals("Microsoft.Exchange.Data.Storage.MailboxInfoStaleException", StringComparison.OrdinalIgnoreCase))
            {
                return(new MailboxInfoStaleException(localizedString, new DatabaseNotFoundException(localizedString)));
            }
            if (exceptionType.StartsWith("Microsoft.Mapi.MapiException", StringComparison.OrdinalIgnoreCase))
            {
                return(FaultInjectionHelper.CreateXsoExceptionFromMapiException(exceptionType, localizedString));
            }
            return(new ApplicationException(localizedString));
        }