diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 9d3ffafd0f..8437c5f9f8 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,4 +1,4 @@ - + - + https://github.com/dotnet/corefx - 315fd00cb2465390900209919cdb2bf6bc44ae0e + 0a9a366e290aded3e9bf5d082d6beee5ff560177 https://github.com/aspnet/Extensions diff --git a/eng/Versions.props b/eng/Versions.props index d0a80a43d8..69cdd6472b 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -1,4 +1,4 @@ - 1.0.0-beta.19218.1 - 3.0.0-preview5-27618-01 - 3.0.0-preview5-27618-01 + 3.0.0-preview5-27619-03 + 3.0.0-preview5-27619-03 - 4.6.0-preview5.19217.11 - 4.6.0-preview5.19217.11 - 4.6.0-preview5.19217.11 - 4.6.0-preview5.19217.11 - 4.7.0-preview5.19217.11 - 4.6.0-preview5.19217.11 - 4.6.0-preview5.19217.11 - 4.6.0-preview5.19217.11 - 4.6.0-preview5.19217.11 - 1.7.0-preview5.19217.11 - 4.6.0-preview5.19217.11 - 4.6.0-preview5.19217.11 - 4.6.0-preview5.19217.11 - 4.6.0-preview5.19217.11 - 4.6.0-preview5.19217.11 - 4.6.0-preview5.19217.11 - 4.6.0-preview5.19217.11 - 4.6.0-preview5.19217.11 - 4.6.0-preview5.19217.11 + 4.6.0-preview5.19218.11 + 4.6.0-preview5.19218.11 + 4.6.0-preview5.19218.11 + 4.6.0-preview5.19218.11 + 4.7.0-preview5.19218.11 + 4.6.0-preview5.19218.11 + 4.6.0-preview5.19218.11 + 4.6.0-preview5.19218.11 + 4.6.0-preview5.19218.11 + 1.7.0-preview5.19218.11 + 4.6.0-preview5.19218.11 + 4.6.0-preview5.19218.11 + 4.6.0-preview5.19218.11 + 4.6.0-preview5.19218.11 + 4.6.0-preview5.19218.11 + 4.6.0-preview5.19218.11 + 4.6.0-preview5.19218.11 + 4.6.0-preview5.19218.11 + 4.6.0-preview5.19218.11 - 3.0.0-preview5.19217.11 + 3.0.0-preview5.19218.11 3.0.0-preview5.19218.3 3.0.0-preview5.19218.3 diff --git a/src/Mvc/Mvc.ViewFeatures/src/Infrastructure/DefaultTempDataSerializer.cs b/src/Mvc/Mvc.ViewFeatures/src/Infrastructure/DefaultTempDataSerializer.cs index b5ff663db4..026f4d0528 100644 --- a/src/Mvc/Mvc.ViewFeatures/src/Infrastructure/DefaultTempDataSerializer.cs +++ b/src/Mvc/Mvc.ViewFeatures/src/Infrastructure/DefaultTempDataSerializer.cs @@ -85,7 +85,7 @@ namespace Microsoft.AspNetCore.Mvc.ViewFeatures.Infrastructure using (var bufferWriter = new ArrayBufferWriter()) { - var writer = new Utf8JsonWriter(bufferWriter); + using var writer = new Utf8JsonWriter(bufferWriter); writer.WriteStartObject(); foreach (var (key, value) in values) { diff --git a/src/Security/Authentication/JwtBearer/samples/JwtBearerSample/Startup.cs b/src/Security/Authentication/JwtBearer/samples/JwtBearerSample/Startup.cs index c1bd7f6686..65a3e40f7a 100644 --- a/src/Security/Authentication/JwtBearer/samples/JwtBearerSample/Startup.cs +++ b/src/Security/Authentication/JwtBearer/samples/JwtBearerSample/Startup.cs @@ -103,7 +103,7 @@ namespace JwtBearerSample private void Serialize(IList todos, IBufferWriter output) { - var writer = new Utf8JsonWriter(output); + using var writer = new Utf8JsonWriter(output); writer.WriteStartArray(); foreach (var todo in todos) { diff --git a/src/SignalR/common/Http.Connections.Common/src/NegotiateProtocol.cs b/src/SignalR/common/Http.Connections.Common/src/NegotiateProtocol.cs index 2a906b3453..ecd1e76623 100644 --- a/src/SignalR/common/Http.Connections.Common/src/NegotiateProtocol.cs +++ b/src/SignalR/common/Http.Connections.Common/src/NegotiateProtocol.cs @@ -4,6 +4,7 @@ using System; using System.Buffers; using System.Collections.Generic; +using System.Diagnostics; using System.IO; using System.Text; using System.Text.Json; @@ -35,25 +36,25 @@ namespace Microsoft.AspNetCore.Http.Connections public static void WriteResponse(NegotiationResponse response, IBufferWriter output) { - var writer = new Utf8JsonWriter(output, new JsonWriterState(new JsonWriterOptions() { SkipValidation = true })); + using var writer = new Utf8JsonWriter(output, new JsonWriterOptions() { SkipValidation = true }); writer.WriteStartObject(); if (!string.IsNullOrEmpty(response.Url)) { - writer.WriteString(UrlPropertyNameBytes, response.Url, escape: false); + writer.WriteString(UrlPropertyNameBytes, response.Url); } if (!string.IsNullOrEmpty(response.AccessToken)) { - writer.WriteString(AccessTokenPropertyNameBytes, response.AccessToken, escape: false); + writer.WriteString(AccessTokenPropertyNameBytes, response.AccessToken); } if (!string.IsNullOrEmpty(response.ConnectionId)) { - writer.WriteString(ConnectionIdPropertyNameBytes, response.ConnectionId, escape: false); + writer.WriteString(ConnectionIdPropertyNameBytes, response.ConnectionId); } - writer.WriteStartArray(AvailableTransportsPropertyNameBytes, escape: false); + writer.WriteStartArray(AvailableTransportsPropertyNameBytes); if (response.AvailableTransports != null) { @@ -62,20 +63,20 @@ namespace Microsoft.AspNetCore.Http.Connections writer.WriteStartObject(); if (availableTransport.Transport != null) { - writer.WriteString(TransportPropertyNameBytes, availableTransport.Transport, escape: false); + writer.WriteString(TransportPropertyNameBytes, availableTransport.Transport); } else { // Might be able to remove this after https://github.com/dotnet/corefx/issues/34632 is resolved - writer.WriteNull(TransportPropertyNameBytes, escape: false); + writer.WriteNull(TransportPropertyNameBytes); } - writer.WriteStartArray(TransferFormatsPropertyNameBytes, escape: false); + writer.WriteStartArray(TransferFormatsPropertyNameBytes); if (availableTransport.TransferFormats != null) { foreach (var transferFormat in availableTransport.TransferFormats) { - writer.WriteStringValue(transferFormat, escape: false); + writer.WriteStringValue(transferFormat); } } @@ -87,7 +88,8 @@ namespace Microsoft.AspNetCore.Http.Connections writer.WriteEndArray(); writer.WriteEndObject(); - writer.Flush(isFinalBlock: true); + writer.Flush(); + Debug.Assert(writer.CurrentDepth == 0); } public static NegotiationResponse ParseResponse(ReadOnlySpan content) diff --git a/src/SignalR/common/Protocols.Json/src/Protocol/JsonHubProtocol.cs b/src/SignalR/common/Protocols.Json/src/Protocol/JsonHubProtocol.cs index 3f59d02c8a..aa2d6cd2ca 100644 --- a/src/SignalR/common/Protocols.Json/src/Protocol/JsonHubProtocol.cs +++ b/src/SignalR/common/Protocols.Json/src/Protocol/JsonHubProtocol.cs @@ -4,6 +4,7 @@ using System; using System.Buffers; using System.Collections.Generic; +using System.Diagnostics; using System.IO; using System.Runtime.ExceptionServices; using System.Text.Json; @@ -443,55 +444,56 @@ namespace Microsoft.AspNetCore.SignalR.Protocol private void WriteMessageCore(HubMessage message, IBufferWriter stream) { - var writer = new Utf8JsonWriter(stream); + using var writer = new Utf8JsonWriter(stream); writer.WriteStartObject(); switch (message) { case InvocationMessage m: - WriteMessageType(ref writer, HubProtocolConstants.InvocationMessageType); - WriteHeaders(ref writer, m); - WriteInvocationMessage(m, ref writer); + WriteMessageType(writer, HubProtocolConstants.InvocationMessageType); + WriteHeaders(writer, m); + WriteInvocationMessage(m, writer); break; case StreamInvocationMessage m: - WriteMessageType(ref writer, HubProtocolConstants.StreamInvocationMessageType); - WriteHeaders(ref writer, m); - WriteStreamInvocationMessage(m, ref writer); + WriteMessageType(writer, HubProtocolConstants.StreamInvocationMessageType); + WriteHeaders(writer, m); + WriteStreamInvocationMessage(m, writer); break; case StreamItemMessage m: - WriteMessageType(ref writer, HubProtocolConstants.StreamItemMessageType); - WriteHeaders(ref writer, m); - WriteStreamItemMessage(m, ref writer); + WriteMessageType(writer, HubProtocolConstants.StreamItemMessageType); + WriteHeaders(writer, m); + WriteStreamItemMessage(m, writer); break; case CompletionMessage m: - WriteMessageType(ref writer, HubProtocolConstants.CompletionMessageType); - WriteHeaders(ref writer, m); - WriteCompletionMessage(m, ref writer); + WriteMessageType(writer, HubProtocolConstants.CompletionMessageType); + WriteHeaders(writer, m); + WriteCompletionMessage(m, writer); break; case CancelInvocationMessage m: - WriteMessageType(ref writer, HubProtocolConstants.CancelInvocationMessageType); - WriteHeaders(ref writer, m); - WriteCancelInvocationMessage(m, ref writer); + WriteMessageType(writer, HubProtocolConstants.CancelInvocationMessageType); + WriteHeaders(writer, m); + WriteCancelInvocationMessage(m, writer); break; case PingMessage _: - WriteMessageType(ref writer, HubProtocolConstants.PingMessageType); + WriteMessageType(writer, HubProtocolConstants.PingMessageType); break; case CloseMessage m: - WriteMessageType(ref writer, HubProtocolConstants.CloseMessageType); - WriteCloseMessage(m, ref writer); + WriteMessageType(writer, HubProtocolConstants.CloseMessageType); + WriteCloseMessage(m, writer); break; default: throw new InvalidOperationException($"Unsupported message type: {message.GetType().FullName}"); } writer.WriteEndObject(); writer.Flush(); + Debug.Assert(writer.CurrentDepth == 0); } - private void WriteHeaders(ref Utf8JsonWriter writer, HubInvocationMessage message) + private void WriteHeaders(Utf8JsonWriter writer, HubInvocationMessage message) { if (message.Headers != null && message.Headers.Count > 0) { - writer.WriteStartObject(HeadersPropertyNameBytes, escape: false); + writer.WriteStartObject(HeadersPropertyNameBytes); foreach (var value in message.Headers) { writer.WriteString(value.Key, value.Value); @@ -500,64 +502,64 @@ namespace Microsoft.AspNetCore.SignalR.Protocol } } - private void WriteCompletionMessage(CompletionMessage message, ref Utf8JsonWriter writer) + private void WriteCompletionMessage(CompletionMessage message, Utf8JsonWriter writer) { - WriteInvocationId(message, ref writer); + WriteInvocationId(message, writer); if (!string.IsNullOrEmpty(message.Error)) { - writer.WriteString(ErrorPropertyNameBytes, message.Error, escape: false); + writer.WriteString(ErrorPropertyNameBytes, message.Error); } else if (message.HasResult) { using var token = GetParsedObject(message.Result, message.Result?.GetType()); - token.RootElement.WriteAsProperty(ResultPropertyNameBytes, ref writer); + token.RootElement.WriteAsProperty(ResultPropertyNameBytes, writer); } } - private void WriteCancelInvocationMessage(CancelInvocationMessage message, ref Utf8JsonWriter writer) + private void WriteCancelInvocationMessage(CancelInvocationMessage message, Utf8JsonWriter writer) { - WriteInvocationId(message, ref writer); + WriteInvocationId(message, writer); } - private void WriteStreamItemMessage(StreamItemMessage message, ref Utf8JsonWriter writer) + private void WriteStreamItemMessage(StreamItemMessage message, Utf8JsonWriter writer) { - WriteInvocationId(message, ref writer); + WriteInvocationId(message, writer); using var token = GetParsedObject(message.Item, message.Item?.GetType()); - token.RootElement.WriteAsProperty(ItemPropertyNameBytes, ref writer); + token.RootElement.WriteAsProperty(ItemPropertyNameBytes, writer); } - private void WriteInvocationMessage(InvocationMessage message, ref Utf8JsonWriter writer) + private void WriteInvocationMessage(InvocationMessage message, Utf8JsonWriter writer) { - WriteInvocationId(message, ref writer); - writer.WriteString(TargetPropertyNameBytes, message.Target, escape: false); + WriteInvocationId(message, writer); + writer.WriteString(TargetPropertyNameBytes, message.Target); - WriteArguments(message.Arguments, ref writer); + WriteArguments(message.Arguments, writer); - WriteStreamIds(message.StreamIds, ref writer); + WriteStreamIds(message.StreamIds, writer); } - private void WriteStreamInvocationMessage(StreamInvocationMessage message, ref Utf8JsonWriter writer) + private void WriteStreamInvocationMessage(StreamInvocationMessage message, Utf8JsonWriter writer) { - WriteInvocationId(message, ref writer); - writer.WriteString(TargetPropertyNameBytes, message.Target, escape: false); + WriteInvocationId(message, writer); + writer.WriteString(TargetPropertyNameBytes, message.Target); - WriteArguments(message.Arguments, ref writer); + WriteArguments(message.Arguments, writer); - WriteStreamIds(message.StreamIds, ref writer); + WriteStreamIds(message.StreamIds, writer); } - private void WriteCloseMessage(CloseMessage message, ref Utf8JsonWriter writer) + private void WriteCloseMessage(CloseMessage message, Utf8JsonWriter writer) { if (message.Error != null) { - writer.WriteString(ErrorPropertyNameBytes, message.Error, escape: false); + writer.WriteString(ErrorPropertyNameBytes, message.Error); } } - private void WriteArguments(object[] arguments, ref Utf8JsonWriter writer) + private void WriteArguments(object[] arguments, Utf8JsonWriter writer) { - writer.WriteStartArray(ArgumentsPropertyNameBytes, escape: false); + writer.WriteStartArray(ArgumentsPropertyNameBytes); foreach (var argument in arguments) { var type = argument?.GetType(); @@ -572,7 +574,7 @@ namespace Microsoft.AspNetCore.SignalR.Protocol else { using var token = GetParsedObject(argument, type); - token.RootElement.WriteAsValue(ref writer); + token.RootElement.WriteAsValue(writer); } } writer.WriteEndArray(); @@ -585,14 +587,14 @@ namespace Microsoft.AspNetCore.SignalR.Protocol return token; } - private void WriteStreamIds(string[] streamIds, ref Utf8JsonWriter writer) + private void WriteStreamIds(string[] streamIds, Utf8JsonWriter writer) { if (streamIds == null) { return; } - writer.WriteStartArray(StreamIdsPropertyNameBytes, escape: false); + writer.WriteStartArray(StreamIdsPropertyNameBytes); foreach (var streamId in streamIds) { writer.WriteStringValue(streamId); @@ -600,17 +602,17 @@ namespace Microsoft.AspNetCore.SignalR.Protocol writer.WriteEndArray(); } - private static void WriteInvocationId(HubInvocationMessage message, ref Utf8JsonWriter writer) + private static void WriteInvocationId(HubInvocationMessage message, Utf8JsonWriter writer) { if (!string.IsNullOrEmpty(message.InvocationId)) { - writer.WriteString(InvocationIdPropertyNameBytes, message.InvocationId, escape: false); + writer.WriteString(InvocationIdPropertyNameBytes, message.InvocationId); } } - private static void WriteMessageType(ref Utf8JsonWriter writer, int type) + private static void WriteMessageType(Utf8JsonWriter writer, int type) { - writer.WriteNumber(TypePropertyNameBytes, type, escape: false); + writer.WriteNumber(TypePropertyNameBytes, type); } private HubMessage BindCancelInvocationMessage(string invocationId) diff --git a/src/SignalR/common/SignalR.Common/src/Protocol/HandshakeProtocol.cs b/src/SignalR/common/SignalR.Common/src/Protocol/HandshakeProtocol.cs index 8727bf543f..22a654e68f 100644 --- a/src/SignalR/common/SignalR.Common/src/Protocol/HandshakeProtocol.cs +++ b/src/SignalR/common/SignalR.Common/src/Protocol/HandshakeProtocol.cs @@ -4,6 +4,7 @@ using System; using System.Buffers; using System.Collections.Concurrent; +using System.Diagnostics; using System.IO; using System.Text; using System.Text.Json; @@ -59,13 +60,14 @@ namespace Microsoft.AspNetCore.SignalR.Protocol /// The output writer. public static void WriteRequestMessage(HandshakeRequestMessage requestMessage, IBufferWriter output) { - var writer = new Utf8JsonWriter(output, new JsonWriterState(new JsonWriterOptions() { SkipValidation = true })); + using var writer = new Utf8JsonWriter(output, new JsonWriterOptions() { SkipValidation = true }); writer.WriteStartObject(); - writer.WriteString(ProtocolPropertyNameBytes, requestMessage.Protocol, escape: false); - writer.WriteNumber(ProtocolVersionPropertyNameBytes, requestMessage.Version, escape: false); + writer.WriteString(ProtocolPropertyNameBytes, requestMessage.Protocol); + writer.WriteNumber(ProtocolVersionPropertyNameBytes, requestMessage.Version); writer.WriteEndObject(); - writer.Flush(isFinalBlock: true); + writer.Flush(); + Debug.Assert(writer.CurrentDepth == 0); TextMessageFormatter.WriteRecordSeparator(output); } @@ -77,7 +79,7 @@ namespace Microsoft.AspNetCore.SignalR.Protocol /// The output writer. public static void WriteResponseMessage(HandshakeResponseMessage responseMessage, IBufferWriter output) { - var writer = new Utf8JsonWriter(output, new JsonWriterState(new JsonWriterOptions() { SkipValidation = true })); + using var writer = new Utf8JsonWriter(output, new JsonWriterOptions() { SkipValidation = true }); writer.WriteStartObject(); if (!string.IsNullOrEmpty(responseMessage.Error)) @@ -85,10 +87,11 @@ namespace Microsoft.AspNetCore.SignalR.Protocol writer.WriteString(ErrorPropertyNameBytes, responseMessage.Error); } - writer.WriteNumber(MinorVersionPropertyNameBytes, responseMessage.MinorVersion, escape: false); + writer.WriteNumber(MinorVersionPropertyNameBytes, responseMessage.MinorVersion); writer.WriteEndObject(); - writer.Flush(isFinalBlock: true); + writer.Flush(); + Debug.Assert(writer.CurrentDepth == 0); TextMessageFormatter.WriteRecordSeparator(output); }