public void DoesNotThrowForNullBuffers() { // This test was added because SslStream throws if passed null buffers with (count == 0) // Which happens if ProduceEnd is called in Frame without _responseStarted == true // As it calls ProduceStart with write immediate == true // This happens in WebSocket Upgrade over SSL ISocketOutput socketOutput = new StreamSocketOutput(new ThrowsOnNullWriteStream(), null); // Should not throw socketOutput.Write(default(ArraySegment<byte>), true); Assert.True(true); }
public FilteredStreamAdapter( Stream filteredStream, MemoryPool2 memory, IKestrelTrace logger) { SocketInput = new SocketInput(memory); SocketOutput = new StreamSocketOutput(filteredStream); _log = logger; _filteredStream = filteredStream; _socketInputStream = new SocketInputStream(SocketInput); _filteredStream.CopyToAsync(_socketInputStream).ContinueWith((task, state) => { ((FilteredStreamAdapter)state).OnStreamClose(task); }, this); }
public FilteredStreamAdapter( Stream filteredStream, MemoryPool2 memory, IKestrelTrace logger, IThreadPool threadPool) { SocketInput = new SocketInput(memory, threadPool); SocketOutput = new StreamSocketOutput(filteredStream, memory); _log = logger; _filteredStream = filteredStream; _socketInputStream = new SocketInputStream(SocketInput); var block = memory.Lease(); // Use pooled block for copy _filteredStream.CopyToAsync(_socketInputStream, block).ContinueWith((task, state) => { var returnedBlock = task.Result; returnedBlock.Pool.Return(returnedBlock); ((FilteredStreamAdapter)state).OnStreamClose(task); }, this); }