public void FinishRead(ref ArraySegment <byte> buffer, ref int offset) { if (!_isConnected) { _delegate.FinishRead(ref buffer, ref offset); return; } else if (SslStream == null) // Transceiver was closed { _readResult = null; return; } Debug.Assert(_readResult != null); try { int ret = SslStream.EndRead(_readResult); _readResult = null; if (ret == 0) { throw new ConnectionLostException(); } Debug.Assert(ret > 0); offset += ret; } catch (IOException ex) { if (Network.ConnectionLost(ex)) { throw new ConnectionLostException(ex); } if (Network.Timeout(ex)) { throw new ConnectionTimeoutException(); } throw new TransportException(ex); } catch (ObjectDisposedException ex) { throw new ConnectionLostException(ex); } }