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); }
public async Task <ISecurableDuplexPipe> GetPipeAsync(ISessionContext context, CancellationToken cancellationToken) { var pipe = await _endpointListener.GetPipeAsync(context, cancellationToken); return(new CustomSecurableDuplexPipe(pipe)); }