System.Net.Security.SslState.CheckCompletionBeforeNextReceive C# (CSharp) Method

CheckCompletionBeforeNextReceive() private method

private CheckCompletionBeforeNextReceive ( ProtocolToken message, AsyncProtocolRequest asyncRequest ) : void
message ProtocolToken
asyncRequest AsyncProtocolRequest
return void
        private void CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
        {
            if (message.Failed)
            {
                StartSendAuthResetSignal(null, asyncRequest, ExceptionDispatchInfo.Capture(new AuthenticationException(SR.net_auth_SSPI, message.GetException())));
                return;
            }
            else if (message.Done && !_pendingReHandshake)
            {
                ProtocolToken alertToken = null;

                if (!CompleteHandshake(ref alertToken))
                {
                    StartSendAuthResetSignal(alertToken, asyncRequest, ExceptionDispatchInfo.Capture(new AuthenticationException(SR.net_ssl_io_cert_validation, null)));
                    return;
                }

                // Release waiting IO if any. Presumably it should not throw.
                // Otherwise application may get not expected type of the exception.
                FinishHandshake(null, asyncRequest);
                return;
            }

            StartReceiveBlob(message.Payload, asyncRequest);
        }

Usage Example

Esempio n. 1
0
 private static void WriteCallback(IAsyncResult transportResult)
 {
     if (!transportResult.CompletedSynchronously)
     {
         AsyncProtocolRequest asyncState  = (AsyncProtocolRequest)transportResult.AsyncState;
         SslState             asyncObject = (SslState)asyncState.AsyncObject;
         try
         {
             asyncObject.InnerStream.EndWrite(transportResult);
             object    obj2      = asyncState.AsyncState;
             Exception exception = obj2 as Exception;
             if (exception != null)
             {
                 throw exception;
             }
             asyncObject.CheckCompletionBeforeNextReceive((ProtocolToken)obj2, asyncState);
         }
         catch (Exception exception2)
         {
             if (asyncState.IsUserCompleted)
             {
                 throw;
             }
             asyncObject.FinishHandshake(exception2, asyncState);
         }
     }
 }