示例#1
0
        async Task <ISecurableDuplexPipe> GetPipeAsync(IEndpointListener endpointListener, SmtpSessionContext sessionContext, CancellationToken cancellationToken)
        {
            var pipe = await endpointListener.GetPipeAsync(sessionContext, cancellationToken).ConfigureAwait(false);

            try
            {
                cancellationToken.ThrowIfCancellationRequested();

                if (sessionContext.EndpointDefinition.IsSecure && _options.ServerCertificate != null)
                {
                    await pipe.UpgradeAsync(_options.ServerCertificate, _options.SupportedSslProtocols, cancellationToken).ConfigureAwait(false);

                    cancellationToken.ThrowIfCancellationRequested();
                }
            }
            catch
            {
                pipe.Dispose();

                throw;
            }

            return(pipe);
        }
示例#2
0
            public async Task <ISecurableDuplexPipe> GetPipeAsync(ISessionContext context, CancellationToken cancellationToken)
            {
                var pipe = await _endpointListener.GetPipeAsync(context, cancellationToken);

                return(new CustomSecurableDuplexPipe(pipe));
            }