Skip to content

Commit 3b3ba24

Browse files
authored
Reuse Http3MessageBody (#42648)
1 parent 6bac424 commit 3b3ba24

File tree

2 files changed

+19
-4
lines changed

2 files changed

+19
-4
lines changed

src/Servers/Kestrel/Core/src/Internal/Http3/Http3MessageBody.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,11 @@ internal sealed class Http3MessageBody : MessageBody
1414
private readonly Http3Stream _context;
1515
private ReadResult _readResult;
1616

17-
private Http3MessageBody(Http3Stream context)
17+
public Http3MessageBody(Http3Stream context)
1818
: base(context)
1919
{
2020
_context = context;
21+
ExtendedConnect = _context.IsExtendedConnectRequest;
2122
}
2223

2324
protected override void OnReadStarting()
@@ -31,9 +32,11 @@ protected override void OnReadStarting()
3132
}
3233
}
3334

34-
public static MessageBody For(Http3Stream context)
35+
public override void Reset()
3536
{
36-
return new Http3MessageBody(context);
37+
base.Reset();
38+
_readResult = default;
39+
ExtendedConnect = _context.IsExtendedConnectRequest;
3740
}
3841

3942
public override void AdvanceTo(SequencePosition consumed, SequencePosition examined)

src/Servers/Kestrel/Core/src/Internal/Http3/Http3Stream.cs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ internal abstract partial class Http3Stream : HttpProtocol, IHttp3Stream, IHttpS
5151
private PseudoHeaderFields _parsedPseudoHeaderFields;
5252
private int _totalParsedHeaderSize;
5353
private bool _isMethodConnect;
54+
private Http3MessageBody? _messageBody;
5455

5556
private readonly ManualResetValueTaskSource<object?> _appCompletedTaskSource = new ManualResetValueTaskSource<object?>();
5657

@@ -920,7 +921,18 @@ protected override string CreateRequestId()
920921
}
921922

922923
protected override MessageBody CreateMessageBody()
923-
=> Http3MessageBody.For(this);
924+
{
925+
if (_messageBody != null)
926+
{
927+
_messageBody.Reset();
928+
}
929+
else
930+
{
931+
_messageBody = new Http3MessageBody(this);
932+
}
933+
934+
return _messageBody;
935+
}
924936

925937
protected override bool TryParseRequest(ReadResult result, out bool endConnection)
926938
{

0 commit comments

Comments
 (0)