private static MessageStatus GetMessageStatus(IMessageConverter converter, ADTransientException unavailableException) { StorageExceptionHandler.LogException(converter, unavailableException); SmtpResponse exceptionSmtpResponse = StorageExceptionHandler.GetExceptionSmtpResponse(converter, unavailableException, false); return(new MessageStatus(MessageAction.Retry, exceptionSmtpResponse, unavailableException)); }
private static MessageStatus GetMessageStatus(IMessageConverter converter, DataValidationException invalidDataException) { StorageExceptionHandler.LogException(converter, invalidDataException); SmtpResponse exceptionSmtpResponse = StorageExceptionHandler.GetExceptionSmtpResponse(converter, invalidDataException, true, converter.IsOutbound ? AckReason.OutboundInvalidDirectoryData : AckReason.InboundInvalidDirectoryData); return(new MessageStatus(MessageAction.NDR, exceptionSmtpResponse, invalidDataException)); }
private static MessageStatus GetMessageStatus(IMessageConverter converter, ConversionFailedException exception) { StorageExceptionHandler.LogException(converter, exception); SmtpResponse exceptionSmtpResponse = StorageExceptionHandler.GetExceptionSmtpResponse(converter, exception, true, "554", (ConversionFailureReason.ExceedsLimit == exception.ConversionFailureReason) ? "5.3.4" : "5.6.0", StorageExceptionHandler.GetReasonDescription(exception.ConversionFailureReason), true); return(new MessageStatus(MessageAction.NDR, exceptionSmtpResponse, exception, true)); }
private static MessageStatus GetMessageStatus(IMessageConverter converter, DataSourceOperationException dataSourceOperationException) { if (dataSourceOperationException is ADInvalidCredentialException) { ADTransientException unavailableException = new ADTransientException(dataSourceOperationException.LocalizedString, dataSourceOperationException); return(StorageExceptionHandler.GetMessageStatus(converter, unavailableException)); } StorageExceptionHandler.LogException(converter, dataSourceOperationException); return(new MessageStatus(MessageAction.NDR, StorageExceptionHandler.GetExceptionSmtpResponse(converter, dataSourceOperationException, true), dataSourceOperationException)); }
private static MessageStatus GetMessageStatus(IMessageConverter converter, IOException e) { StorageExceptionHandler.LogException(converter, e); SmtpResponse exceptionSmtpResponse = StorageExceptionHandler.GetExceptionSmtpResponse(converter, e, true, AckReason.DiskFull); if (ExceptionHelper.IsDiskFullException(e)) { return(new MessageStatus(converter.IsOutbound ? MessageAction.RetryMailboxServer : MessageAction.RetryQueue, exceptionSmtpResponse, e)); } return(new MessageStatus(MessageAction.Throw, exceptionSmtpResponse, e)); }
public MessageStatus Handle(string handlerName, Exception exception, IMessageConverter converter, TimeSpan fastRetryInterval, TimeSpan quarantineRetryInterval) { StorageExceptionHandler.LogException(converter, exception); exception.GetType(); Exception exception2 = null; Exception exceptionAssociatedWithHandler = null; ConcurrentDictionary <Type, Handler> handlerMap = this.registeredHandlers[handlerName]; ConcurrentDictionary <Type, Handler> overrideHandlerMap = this.overrideHandlers.ContainsKey(handlerName) ? this.overrideHandlers[handlerName] : null; Handler handler = ExceptionHandler.FindHandler(handlerMap, overrideHandlerMap, exception, out exception2, out exceptionAssociatedWithHandler); if (handler == null) { handler = ExceptionHandler.ThrowHandler; } return(handler.CreateStatus(exception2, exceptionAssociatedWithHandler, converter, fastRetryInterval, quarantineRetryInterval)); }
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)); }
private static MessageStatus GetMessageStatus(IMessageConverter converter, ExchangeDataException dataException) { StorageExceptionHandler.LogException(converter, dataException); return(new MessageStatus(MessageAction.NDR, StorageExceptionHandler.GetExceptionSmtpResponse(converter, dataException, true), dataException)); }