Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dotnet/aspnetcore.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Newton-King <james@newtonking.com>2022-07-11 08:06:45 +0300
committerJames Newton-King <james@newtonking.com>2022-07-11 08:06:45 +0300
commit568710014ad33ceda4c732f584ad74330f6bacb8 (patch)
tree0d8018326c877fa0266ca23f9dc00759ad5aea3c
parente6dd3946f1f14e4182c70ac532dda10dd0f25f4b (diff)
Reuse Http3MessageBodyjamesnk/h3-messagebody
-rw-r--r--src/Servers/Kestrel/Core/src/Internal/Http3/Http3MessageBody.cs9
-rw-r--r--src/Servers/Kestrel/Core/src/Internal/Http3/Http3Stream.cs14
2 files changed, 19 insertions, 4 deletions
diff --git a/src/Servers/Kestrel/Core/src/Internal/Http3/Http3MessageBody.cs b/src/Servers/Kestrel/Core/src/Internal/Http3/Http3MessageBody.cs
index b271ebc076..3acf52411a 100644
--- a/src/Servers/Kestrel/Core/src/Internal/Http3/Http3MessageBody.cs
+++ b/src/Servers/Kestrel/Core/src/Internal/Http3/Http3MessageBody.cs
@@ -14,10 +14,11 @@ internal sealed class Http3MessageBody : MessageBody
private readonly Http3Stream _context;
private ReadResult _readResult;
- private Http3MessageBody(Http3Stream context)
+ public Http3MessageBody(Http3Stream context)
: base(context)
{
_context = context;
+ ExtendedConnect = _context.IsExtendedConnectRequest;
}
protected override void OnReadStarting()
@@ -31,9 +32,11 @@ internal sealed class Http3MessageBody : MessageBody
}
}
- public static MessageBody For(Http3Stream context)
+ public override void Reset()
{
- return new Http3MessageBody(context);
+ base.Reset();
+ _readResult = default;
+ ExtendedConnect = _context.IsExtendedConnectRequest;
}
public override void AdvanceTo(SequencePosition consumed, SequencePosition examined)
diff --git a/src/Servers/Kestrel/Core/src/Internal/Http3/Http3Stream.cs b/src/Servers/Kestrel/Core/src/Internal/Http3/Http3Stream.cs
index fd264c564a..3dc1bcc628 100644
--- a/src/Servers/Kestrel/Core/src/Internal/Http3/Http3Stream.cs
+++ b/src/Servers/Kestrel/Core/src/Internal/Http3/Http3Stream.cs
@@ -52,6 +52,7 @@ internal abstract partial class Http3Stream : HttpProtocol, IHttp3Stream, IHttpS
private PseudoHeaderFields _parsedPseudoHeaderFields;
private int _totalParsedHeaderSize;
private bool _isMethodConnect;
+ private Http3MessageBody? _messageBody;
private readonly ManualResetValueTaskSource<object?> _appCompletedTaskSource = new ManualResetValueTaskSource<object?>();
@@ -921,7 +922,18 @@ internal abstract partial class Http3Stream : HttpProtocol, IHttp3Stream, IHttpS
}
protected override MessageBody CreateMessageBody()
- => Http3MessageBody.For(this);
+ {
+ if (_messageBody != null)
+ {
+ _messageBody.Reset();
+ }
+ else
+ {
+ _messageBody = new Http3MessageBody(this);
+ }
+
+ return _messageBody;
+ }
protected override bool TryParseRequest(ReadResult result, out bool endConnection)
{