/// <summary> /// A callback the gets invoked after SSL auth completes. /// </summary> /// <param name="result"></param> private void EnableClientSslCallback(IAsyncResult result) { canRead = true; SslStream sslStream = (SslStream)result.AsyncState; sslStream.EndAuthenticateAsClient(result); SockNetLogger.Log(SockNetLogger.LogLevel.INFO, this, "Authenticated SSL with [{0}].", RemoteEndpoint); SockNetLogger.Log(SockNetLogger.LogLevel.DEBUG, this, "[SSL] Reading data from [{0}]...", RemoteEndpoint); this.stream = sslStream; PooledObject <byte[]> buffer = bufferPool.Borrow(); buffer.RefCount.Increment(); receiveState = new ReceiveState() { buffer = buffer, offset = 0, length = buffer.Value.Length }; currentReadResult = stream.BeginRead(buffer.Value, 0, buffer.Value.Length, new AsyncCallback(ReceiveCallback), null); attachPromiseFulfiller.Fulfill(this); }