private static string GetTlsError(TlsFailureException e) { switch (e.FailureReason) { case 0: return(Strings.TlsOther(e.ErrorCode, e.Message)); case 1: return(Strings.TlsLocalCertificateNotFound(e.ErrorCode, e.Message)); case 2: return(Strings.TlsUntrustedRemoteCertificate(e.ErrorCode, e.Message)); case 3: return(Strings.TlsIncorrectNameInRemoteCertificate(e.ErrorCode, e.Message)); case 4: return(Strings.TlsCertificateExpired(e.ErrorCode, e.Message)); case 5: return(Strings.TlsTlsNegotiationFailure(e.ErrorCode, e.Message)); case 6: return(Strings.TlsRemoteDisconnected(e.ErrorCode, e.Message)); case 7: return(Strings.TlsRemoteCertificateRevoked(e.ErrorCode, e.Message)); case 8: return(Strings.TlsRemoteCertificateInvalidUsage(e.ErrorCode, e.Message)); default: return(e.Message); } }
// Token: 0x06000141 RID: 321 RVA: 0x00006FEC File Offset: 0x000051EC private static void HandleError(object errorCode, AsyncResult <ImapConnectionContext, ImapResultData> curOp) { ImapNetworkFacade.CountCommand(curOp, false); if (errorCode is ConnectionsPermanentException || errorCode is ConnectionsTransientException) { curOp.State.Log.Error("Exception while communicating: {0}.", new object[] { errorCode }); curOp.ProcessCompleted((Exception)errorCode); return; } ImapNetworkFacade imapNetworkFacade = (ImapNetworkFacade)curOp.State.NetworkFacade; if (imapNetworkFacade.networkConnection != null) { imapNetworkFacade.networkConnection.Shutdown(); imapNetworkFacade.isNetworkConnectionShutdown = true; } if (errorCode is SocketError) { switch ((SocketError)errorCode) { case SocketError.Shutdown: curOp.State.Log.Error("Network connection shut down: {0}.", new object[] { errorCode }); curOp.ProcessCompleted(ImapNetworkFacade.BuildConnectionShutdownException()); return; case SocketError.TimedOut: curOp.State.Log.Error("Operation timed out, shutting down network connection: {0}.", new object[] { errorCode }); curOp.ProcessCompleted(ImapNetworkFacade.BuildTimeoutException()); return; } curOp.State.Log.Error("HandleError unhandled SocketError={0}, shutting down network connection.", new object[] { ((SocketError)errorCode).ToString() }); curOp.ProcessCompleted(ImapNetworkFacade.BuildUnknownNetworkException()); return; } if (errorCode is SecurityStatus) { curOp.State.Log.Error("ImapNetworkFacade.HandleError (SecurityStatus={0}), shutting down network connection.", new object[] { errorCode }); LocalizedString value = CXStrings.TlsFailureOccurredError(((SecurityStatus)errorCode).ToString()); TlsFailureException innerException = new TlsFailureException(value); curOp.ProcessCompleted(new ImapConnectionException(CXStrings.ImapSecurityStatusError, RetryPolicy.Backoff, innerException)); return; } curOp.State.Log.Error("HandleError unknown error type (error={0}), shutting down network connection.", new object[] { errorCode }); curOp.ProcessCompleted(ImapNetworkFacade.BuildUnknownNetworkException()); }