From bc16f9e880a91a9432283012a348b9ac85301c2e Mon Sep 17 00:00:00 2001 From: YuliiaKovalova <95473390+YuliiaKovalova@users.noreply.github.com> Date: Wed, 21 Jan 2026 11:58:54 +0100 Subject: [PATCH 1/4] Update TryCreateExtendedHeaderType to check multiple flags --- src/Shared/INodePacket.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Shared/INodePacket.cs b/src/Shared/INodePacket.cs index 541a266d1b9..1152a256382 100644 --- a/src/Shared/INodePacket.cs +++ b/src/Shared/INodePacket.cs @@ -329,7 +329,7 @@ internal static class NodePacketTypeExtensions /// True if extended header flag was set, false otherwise. public static bool TryCreateExtendedHeaderType(HandshakeOptions handshakeOptions, NodePacketType type, out byte extendedheader) { - if (Handshake.IsHandshakeOptionEnabled(handshakeOptions, HandshakeOptions.TaskHost)) + if (Handshake.IsHandshakeOptionEnabled(handshakeOptions, HandshakeOptions.NET | HandshakeOptions.TaskHost) || Handshake.IsHandshakeOptionEnabled(handshakeOptions, HandshakeOptions.CLR4 | HandshakeOptions.TaskHost)) { extendedheader = (byte)((byte)type | ExtendedHeaderFlag); return true; From 3426d9990ef8c2039f6e9a65592f49b271403e55 Mon Sep 17 00:00:00 2001 From: YuliiaKovalova <95473390+YuliiaKovalova@users.noreply.github.com> Date: Wed, 21 Jan 2026 12:03:14 +0100 Subject: [PATCH 2/4] Clarify extended header support conditions Refactor TryCreateExtendedHeaderType to clarify conditions for extended header support. --- src/Shared/INodePacket.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Shared/INodePacket.cs b/src/Shared/INodePacket.cs index 1152a256382..fc13106fd96 100644 --- a/src/Shared/INodePacket.cs +++ b/src/Shared/INodePacket.cs @@ -329,7 +329,9 @@ internal static class NodePacketTypeExtensions /// True if extended header flag was set, false otherwise. public static bool TryCreateExtendedHeaderType(HandshakeOptions handshakeOptions, NodePacketType type, out byte extendedheader) { - if (Handshake.IsHandshakeOptionEnabled(handshakeOptions, HandshakeOptions.NET | HandshakeOptions.TaskHost) || Handshake.IsHandshakeOptionEnabled(handshakeOptions, HandshakeOptions.CLR4 | HandshakeOptions.TaskHost)) + // Extended headers are supported by .NET Core+ and CLR4 task hosts, but not CLR2. + if (handshakeOptions.HasFlag(HandshakeOptions.TaskHost) + && (handshakeOptions.HasFlag(HandshakeOptions.NET) || handshakeOptions.HasFlag(HandshakeOptions.CLR4))) { extendedheader = (byte)((byte)type | ExtendedHeaderFlag); return true; From ea441f6ab7e716d83c30a2a260c2c74dc3c4382e Mon Sep 17 00:00:00 2001 From: YuliiaKovalova <95473390+YuliiaKovalova@users.noreply.github.com> Date: Wed, 21 Jan 2026 13:03:06 +0100 Subject: [PATCH 3/4] Update src/Shared/INodePacket.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/Shared/INodePacket.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Shared/INodePacket.cs b/src/Shared/INodePacket.cs index fc13106fd96..086e1415646 100644 --- a/src/Shared/INodePacket.cs +++ b/src/Shared/INodePacket.cs @@ -329,9 +329,10 @@ internal static class NodePacketTypeExtensions /// True if extended header flag was set, false otherwise. public static bool TryCreateExtendedHeaderType(HandshakeOptions handshakeOptions, NodePacketType type, out byte extendedheader) { - // Extended headers are supported by .NET Core+ and CLR4 task hosts, but not CLR2. - if (handshakeOptions.HasFlag(HandshakeOptions.TaskHost) - && (handshakeOptions.HasFlag(HandshakeOptions.NET) || handshakeOptions.HasFlag(HandshakeOptions.CLR4))) + // Extended headers are supported by all task hosts except CLR2. CLR4 is represented + // by the absence of both CLR2 and NET flags; NET covers .NET Core and later. + if (handshakeOptions.HasFlag(HandshakeOptions.TaskHost) + && !handshakeOptions.HasFlag(HandshakeOptions.CLR2)) { extendedheader = (byte)((byte)type | ExtendedHeaderFlag); return true; From 9a217912a51f37f1fc252e8ed8b6501f6967a077 Mon Sep 17 00:00:00 2001 From: YuliiaKovalova Date: Wed, 21 Jan 2026 14:14:07 +0100 Subject: [PATCH 4/4] fix the comment --- src/Shared/INodePacket.cs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/Shared/INodePacket.cs b/src/Shared/INodePacket.cs index 086e1415646..f455dc9aae5 100644 --- a/src/Shared/INodePacket.cs +++ b/src/Shared/INodePacket.cs @@ -329,10 +329,9 @@ internal static class NodePacketTypeExtensions /// True if extended header flag was set, false otherwise. public static bool TryCreateExtendedHeaderType(HandshakeOptions handshakeOptions, NodePacketType type, out byte extendedheader) { - // Extended headers are supported by all task hosts except CLR2. CLR4 is represented - // by the absence of both CLR2 and NET flags; NET covers .NET Core and later. - if (handshakeOptions.HasFlag(HandshakeOptions.TaskHost) - && !handshakeOptions.HasFlag(HandshakeOptions.CLR2)) + // Extended headers are supported by all task hosts except CLR2. + if (Handshake.IsHandshakeOptionEnabled(handshakeOptions, HandshakeOptions.TaskHost) + && !Handshake.IsHandshakeOptionEnabled(handshakeOptions, HandshakeOptions.CLR2)) { extendedheader = (byte)((byte)type | ExtendedHeaderFlag); return true;