// Token: 0x060000E2 RID: 226 RVA: 0x00003F80 File Offset: 0x00002180 public static string GetDiagnosticInfo(Exception ex, string diagnosticInfo) { AnchorUtil.ThrowOnNullArgument(ex, "ex"); Exception innerException = ex.InnerException; int num = 0; while (num < 10 && innerException != null) { MapiPermanentException ex2 = innerException as MapiPermanentException; MapiRetryableException ex3 = innerException as MapiRetryableException; string text = innerException.Message; if (ex2 != null) { text = ex2.DiagCtx.ToCompactString(); } else if (ex3 != null) { text = ex3.DiagCtx.ToCompactString(); } if (!string.IsNullOrEmpty(text)) { if (diagnosticInfo == null) { diagnosticInfo = string.Format(CultureInfo.InvariantCulture, "InnerException:{0}:{1}", new object[] { innerException.GetType().Name, text }); } else { diagnosticInfo = string.Format(CultureInfo.InvariantCulture, "{0} InnerException:{1}:{2}", new object[] { diagnosticInfo, innerException.GetType().Name, text }); } } num++; innerException = innerException.InnerException; } string value = string.Empty; MigrationPermanentException ex4 = ex as MigrationPermanentException; MigrationTransientException ex5 = ex as MigrationTransientException; if (ex4 != null) { value = ex4.InternalError + ". "; } else if (ex5 != null) { value = ex5.InternalError + ". "; } StringBuilder stringBuilder = new StringBuilder(value); stringBuilder.Append(diagnosticInfo); stringBuilder.Append(ex.ToString()); return(AnchorLogger.SanitizeDiagnosticInfo(stringBuilder.ToString())); }
public static string GetDiagnosticContextFromException(Exception exception) { string result = string.Empty; for (Exception ex = exception; ex != null; ex = ex.InnerException) { DiagnosticContext diagnosticContext = null; MapiPermanentException ex2 = ex as MapiPermanentException; MapiRetryableException ex3 = ex as MapiRetryableException; if (ex2 != null) { diagnosticContext = ex2.DiagCtx; } else if (ex3 != null) { diagnosticContext = ex3.DiagCtx; } if (diagnosticContext != null) { result = string.Format("[e::{0}]", diagnosticContext.ToCompactString()); break; } } return(result); }
internal static string GetExceptionDiagnosticInfo(Exception exception) { StringBuilder stringBuilder = new StringBuilder((exception.InnerException == null) ? 1000 : 2000); stringBuilder.Append(exception.Message); Exception ex = (exception.InnerException == null) ? exception : exception.InnerException; MapiPermanentException ex2 = ex as MapiPermanentException; if (ex2 != null) { stringBuilder.AppendFormat(" {0}", StorageExceptionHandler.GetDiagnosticInfo(ex2)); } else { MapiRetryableException ex3 = ex as MapiRetryableException; if (ex3 != null) { stringBuilder.AppendFormat(" {0}", StorageExceptionHandler.GetDiagnosticInfo(ex3)); } else { stringBuilder.AppendFormat(" {0}: {1}", ex.GetType().Name, ex.Message); } } return(stringBuilder.ToString()); }
private static string GetDiagnosticInfo(MapiPermanentException e) { if (e.DiagCtx != null) { return(e.DiagCtx.ToCompactString()); } return(string.Empty); }
// Token: 0x06000B6A RID: 2922 RVA: 0x000497C4 File Offset: 0x000479C4 public static void ThrowInnerIfMapiExceptionHandledbyAI(StoragePermanentException e) { if (e == null) { return; } MapiPermanentException ex = e.InnerException as MapiPermanentException; if (ex != null && MapiExceptionFilter.IsMapiPermanentExceptionHandledByAI(ex)) { throw ex; } }
private string GetDiagnosticContext(Exception ex) { if (ex == null) { throw new ArgumentNullException("ex"); } string result = string.Empty; Exception innerException = ex.InnerException; MapiPermanentException ex2 = innerException as MapiPermanentException; MapiRetryableException ex3 = innerException as MapiRetryableException; if (ex2 != null) { result = ex2.DiagCtx.ToCompactString(); } else if (ex3 != null) { result = ex3.DiagCtx.ToCompactString(); } return(result); }
internal static string GetDiagnosticContext(Exception exception) { string result = string.Empty; while (exception != null) { MapiPermanentException ex = exception.InnerException as MapiPermanentException; if (ex != null) { result = ex.DiagCtx.ToCompactString(); break; } MapiRetryableException ex2 = exception.InnerException as MapiRetryableException; if (ex2 != null) { result = ex2.DiagCtx.ToCompactString(); break; } exception = exception.InnerException; } return(result); }
private static MessageStatus GetMessageStatus(IMessageConverter converter, StorageTransientException storageException) { StorageExceptionHandler.LogException(converter, storageException); if (storageException is MailboxInSiteFailoverException) { return(new MessageStatus(converter.IsOutbound ? MessageAction.Skip : MessageAction.Reroute, StorageExceptionHandler.GetExceptionSmtpResponse(converter, storageException, false), storageException)); } if (storageException.InnerException != null) { MapiPermanentException ex = storageException.InnerException as MapiPermanentException; if (ex != null) { return(StorageExceptionHandler.GetMessageStatus <StorageTransientException>(converter, ex, storageException)); } MapiRetryableException ex2 = storageException.InnerException as MapiRetryableException; if (ex2 != null) { return(StorageExceptionHandler.GetMessageStatus <StorageTransientException>(converter, ex2, storageException)); } } return(new MessageStatus(MessageAction.Retry, StorageExceptionHandler.GetExceptionSmtpResponse(converter, storageException, false), storageException)); }
private static MessageStatus GetMessageStatus(IMessageConverter converter, StoragePermanentException storageException) { StorageExceptionHandler.LogException(converter, storageException); ConversionFailedException ex = storageException as ConversionFailedException; if (ex != null) { return(StorageExceptionHandler.GetMessageStatus(converter, ex)); } if (storageException is MailboxCrossSiteFailoverException || storageException is MailboxInfoStaleException) { return(new MessageStatus(converter.IsOutbound ? MessageAction.Skip : MessageAction.Reroute, StorageExceptionHandler.GetExceptionSmtpResponse(converter, storageException, true), storageException)); } if (storageException is UnableToFindServerForDatabaseException || storageException is IllegalCrossServerConnectionException) { return(new MessageStatus(converter.IsOutbound ? MessageAction.Skip : MessageAction.RetryQueue, StorageExceptionHandler.GetExceptionSmtpResponse(converter, storageException, false), storageException)); } if (storageException.InnerException is CannotGetSiteInfoException) { return(new MessageStatus(converter.IsOutbound ? MessageAction.RetryMailboxServer : MessageAction.RetryQueue, StorageExceptionHandler.GetExceptionSmtpResponse(converter, storageException.InnerException, true), storageException)); } if (storageException.InnerException != null) { MapiPermanentException ex2 = storageException.InnerException as MapiPermanentException; if (ex2 != null) { return(StorageExceptionHandler.GetMessageStatus <StoragePermanentException>(converter, ex2, storageException)); } MapiRetryableException ex3 = storageException.InnerException as MapiRetryableException; if (ex3 != null) { return(StorageExceptionHandler.GetMessageStatus <StoragePermanentException>(converter, ex3, storageException)); } } return(new MessageStatus(MessageAction.NDR, StorageExceptionHandler.GetExceptionSmtpResponse(converter, storageException, true), storageException)); }
// Token: 0x06000B6C RID: 2924 RVA: 0x0004982A File Offset: 0x00047A2A private static bool IsMapiPermanentExceptionHandledByAI(MapiPermanentException e) { return(e != null && (e is MapiExceptionAmbiguousAlias || e is MapiExceptionJetErrorIndexNotFound || e is MapiExceptionJetErrorInstanceUnavailableDueToFatalLogDiskFull || e is MapiExceptionJetErrorLogDiskFull || e is MapiExceptionJetErrorReadVerifyFailure || e is MapiExceptionMdbOffline)); }
private static MessageStatus GetMessageStatus <T>(IMessageConverter converter, MapiPermanentException mapiException, T storageException) where T : Exception { string name = mapiException.GetType().Name; string key; MessageStatus messageStatus; switch (key = name) { case "MapiExceptionJetErrorLogDiskFull": return(new MessageStatus(MessageAction.RetryQueue, StorageExceptionHandler.GetExceptionSmtpResponse(converter, storageException, true, AckReason.MailboxDiskFull), storageException)); case "MapiExceptionADDuplicateEntry": return(new MessageStatus(converter.IsOutbound ? MessageAction.RetryMailboxServer : MessageAction.RetryQueue, StorageExceptionHandler.GetExceptionSmtpResponse(converter, storageException, true, "Duplicated AD entries found"), storageException)); case "MapiExceptionNoMoreConnections": messageStatus = new MessageStatus(converter.IsOutbound ? MessageAction.RetryMailboxServer : MessageAction.RetryQueue, StorageExceptionHandler.GetExceptionSmtpResponse(converter, storageException, true, SmtpResponse.TooManyConnectionsPerSource), storageException); messageStatus.RetryInterval = new TimeSpan?(StorageExceptionHandler.MailboxDeliveryFastQueueRetryInterval); return(messageStatus); case "MapiExceptionUnknownUser": return(new MessageStatus(converter.IsOutbound ? MessageAction.Retry : MessageAction.Reroute, StorageExceptionHandler.GetExceptionSmtpResponse(converter, storageException, true), storageException)); case "MapiExceptionNoReplicaHere": case "MapiExceptionWrongServer": case "MapiExceptionWrongMailbox": return(new MessageStatus(converter.IsOutbound ? MessageAction.Skip : MessageAction.Reroute, StorageExceptionHandler.GetExceptionSmtpResponse(converter, storageException, true), storageException)); case "MapiExceptionClientVersionDisallowed": return(new MessageStatus(MessageAction.Reroute, StorageExceptionHandler.GetExceptionSmtpResponse(converter, storageException, true), storageException)); case "MapiExceptionDuplicateDelivery": return(new MessageStatus(MessageAction.LogDuplicate, StorageExceptionHandler.GetExceptionSmtpResponse(converter, storageException, true), storageException)); case "MapiExceptionMaxTimeExpired": return(new MessageStatus(MessageAction.NDR, StorageExceptionHandler.GetExceptionSmtpResponse(converter, storageException, true, null, "4.4.1", "connection timed out", true), storageException)); case "MapiExceptionUnableToComplete": return(new MessageStatus(MessageAction.NDR, StorageExceptionHandler.GetExceptionSmtpResponse(converter, storageException, true, null, "4.4.1", "connection timed out", true), storageException)); case "MapiExceptionMessageTooBig": case "MapiExceptionTooComplex": case "MapiExceptionTooBig": case "MapiExceptionMaxAttachmentExceeded": return(new MessageStatus(MessageAction.NDR, StorageExceptionHandler.GetExceptionSmtpResponse(converter, storageException, true, null, "5.3.4", "message exceeds fixed system limits", true), storageException)); case "MapiExceptionTooManyRecips": return(new MessageStatus(MessageAction.NDR, StorageExceptionHandler.GetExceptionSmtpResponse(converter, storageException, true, null, "5.3.3", "too many recipients", true), storageException)); case "MapiExceptionQuotaExceeded": case "MapiExceptionShutoffQuotaExceeded": return(new MessageStatus(MessageAction.NDR, StorageExceptionHandler.GetExceptionSmtpResponse(converter, storageException, true, null, "5.2.2", "mailbox full", true), storageException)); case "MapiExceptionNoReplicaAvailable": case "MapiExceptionFolderDisabled": case "MapiExceptionMailboxDisabled": case "MapiExceptionAccountDisabled": return(new MessageStatus(MessageAction.NDR, StorageExceptionHandler.GetExceptionSmtpResponse(converter, storageException, true, null, "5.2.1", "mailbox disabled", true), storageException)); case "MapiExceptionMdbOffline": return(new MessageStatus(MessageAction.RetryQueue, StorageExceptionHandler.GetExceptionSmtpResponse(converter, storageException, true, AckReason.MDBOffline), storageException)); case "MapiExceptionMaxObjsExceeded": case "MapiExceptionRpcBufferTooSmall": return(new MessageStatus(MessageAction.NDR, StorageExceptionHandler.GetExceptionSmtpResponse(converter, storageException, true, null, "4.3.2", "mailbox busy", true), storageException)); case "MapiExceptionNoAccess": return(new MessageStatus(MessageAction.Retry, StorageExceptionHandler.GetExceptionSmtpResponse(converter, storageException, false, AckReason.MapiNoAccessFailure), storageException)); case "MapiExceptionJetErrorPageNotInitialized": return(new MessageStatus(MessageAction.RetryQueue, StorageExceptionHandler.GetExceptionSmtpResponse(converter, storageException, true, "Database page not initialized"), storageException)); case "MapiExceptionOutOfMemory": case "MapiExceptionTooManyMountedDatabases": return(new MessageStatus(MessageAction.NDR, StorageExceptionHandler.GetExceptionSmtpResponse(converter, storageException, true), storageException)); case "MapiExceptionUnconfigured": return(new MessageStatus(MessageAction.Retry, StorageExceptionHandler.GetExceptionSmtpResponse(converter, storageException, false), storageException)); } messageStatus = new MessageStatus(MessageAction.NDR, StorageExceptionHandler.GetExceptionSmtpResponse(converter, storageException, true), storageException); return(messageStatus); }