in src/Transport/TlsTransport.cs [316:363]
void HandleOperationComplete(IAsyncResult result, bool write, bool syncComplete)
{
TransportAsyncCallbackArgs args = null;
try
{
if (write)
{
args = this.writeState.Args;
ByteBuffer buffer = this.writeState.Buffer;
this.writeState.Reset();
if (buffer != null)
{
buffer.Dispose();
}
this.sslStream.EndWrite(result);
args.BytesTransfered = args.Count;
}
else
{
args = this.readState.Args;
this.readState.Reset();
args.BytesTransfered = this.sslStream.EndRead(result);
}
}
catch (Exception exception) when (!Fx.IsFatal(exception))
{
if (exception is InvalidOperationException)
{
exception = new IOException($"Transport '{this}' is valid for IO operations.", exception);
}
args.Exception = exception;
}
args.CompletedSynchronously = syncComplete;
if (!syncComplete)
{
Action<TransportAsyncCallbackArgs> callback = args.CompletedCallback;
if (callback != null)
{
args.CompletedCallback(args);
}
}
}