Skip to content

Commit 60dd0ca

Browse files
committed
Merge fixes
1 parent 0628b5d commit 60dd0ca

File tree

3 files changed

+14
-3
lines changed

3 files changed

+14
-3
lines changed

src/Servers/Kestrel/perf/Kestrel.Performance/Http2ConnectionBenchmark.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ public class Http2ConnectionBenchmark
2828
private Pipe _pipe;
2929
private HttpRequestHeaders _httpRequestHeaders;
3030
private Http2Connection _connection;
31+
private Http2HeadersEnumerator _requestHeadersEnumerator;
3132
private int _currentStreamId;
3233
private HPackEncoder _hpackEncoder;
3334
private byte[] _headersBuffer;
@@ -70,6 +71,8 @@ public void GlobalSetup()
7071
TimeoutControl = new MockTimeoutControl(),
7172
});
7273

74+
_requestHeadersEnumerator = new Http2HeadersEnumerator();
75+
7376
_currentStreamId = 1;
7477

7578
_ = _connection.ProcessRequestsAsync(new DummyApplication());
@@ -82,7 +85,8 @@ public void GlobalSetup()
8285
[Benchmark]
8386
public async Task EmptyRequest()
8487
{
85-
PipeWriterHttp2FrameExtensions.WriteStartStream(_pipe.Writer, streamId: _currentStreamId, EnumerateHeaders(_httpRequestHeaders), _hpackEncoder, _headersBuffer, endStream: true);
88+
_requestHeadersEnumerator.Initialize(_httpRequestHeaders);
89+
PipeWriterHttp2FrameExtensions.WriteStartStream(_pipe.Writer, streamId: _currentStreamId, _requestHeadersEnumerator, _hpackEncoder, _headersBuffer, endStream: true);
8690
_currentStreamId += 2;
8791
await _pipe.Writer.FlushAsync();
8892
}

src/Servers/Kestrel/shared/test/PipeWriterHttp2FrameExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public static void WriteSettings(this PipeWriter writer, Http2PeerSettings clien
2424
writer.Write(payload);
2525
}
2626

27-
public static void WriteStartStream(this PipeWriter writer, int streamId, IEnumerable<KeyValuePair<string, string>> headers, HPackEncoder hpackEncoder, byte[] headerEncodingBuffer, bool endStream)
27+
public static void WriteStartStream(this PipeWriter writer, int streamId, Http2HeadersEnumerator headers, HPackEncoder hpackEncoder, byte[] headerEncodingBuffer, bool endStream)
2828
{
2929
var frame = new Http2Frame();
3030
frame.PrepareHeaders(Http2HeadersFrameFlags.NONE, streamId);

src/Servers/Kestrel/test/InMemory.FunctionalTests/Http2/Http2TestBase.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -501,7 +501,7 @@ protected Task StartStreamAsync(int streamId, IEnumerable<KeyValuePair<string, s
501501
var tcs = new TaskCompletionSource<object>(TaskCreationOptions.RunContinuationsAsynchronously);
502502
_runningStreams[streamId] = tcs;
503503

504-
PipeWriterHttp2FrameExtensions.WriteStartStream(writableBuffer, streamId, headers, _hpackEncoder, _headerEncodingBuffer, endStream);
504+
PipeWriterHttp2FrameExtensions.WriteStartStream(writableBuffer, streamId, GetHeadersEnumerator(headers), _hpackEncoder, _headerEncodingBuffer, endStream);
505505
return FlushAsync(writableBuffer);
506506
}
507507

@@ -837,6 +837,13 @@ internal async Task<bool> SendContinuationAsync(int streamId, Http2ContinuationF
837837
return done;
838838
}
839839

840+
private Http2HeadersEnumerator GetHeadersEnumerator(IEnumerable<KeyValuePair<string, string>> headers)
841+
{
842+
var headersEnumerator = new Http2HeadersEnumerator();
843+
headersEnumerator.Initialize(headers.ToDictionary(h => h.Key, h => new StringValues(h.Value)));
844+
return headersEnumerator;
845+
}
846+
840847
internal Task SendEmptyContinuationFrameAsync(int streamId, Http2ContinuationFrameFlags flags)
841848
{
842849
var outputWriter = _pair.Application.Output;

0 commit comments

Comments
 (0)