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);
            }
        }
예제 #2
0
        // 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());
        }