From a26c1359de396eb59b7a3949b8ef182a76186cf2 Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Sun, 22 Feb 2026 22:09:48 -0500 Subject: [PATCH] refactor: NatsClient accepts Stream parameter for TLS support --- src/NATS.Server/NatsClient.cs | 6 +++--- src/NATS.Server/NatsServer.cs | 3 ++- tests/NATS.Server.Tests/ClientTests.cs | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/NATS.Server/NatsClient.cs b/src/NATS.Server/NatsClient.cs index 31e69a0..88e78f9 100644 --- a/src/NATS.Server/NatsClient.cs +++ b/src/NATS.Server/NatsClient.cs @@ -25,7 +25,7 @@ public interface ISubListAccess public sealed class NatsClient : IDisposable { private readonly Socket _socket; - private readonly NetworkStream _stream; + private readonly Stream _stream; private readonly NatsOptions _options; private readonly ServerInfo _serverInfo; private readonly NatsParser _parser; @@ -57,12 +57,12 @@ public sealed class NatsClient : IDisposable public IReadOnlyDictionary Subscriptions => _subs; - public NatsClient(ulong id, Socket socket, NatsOptions options, ServerInfo serverInfo, + public NatsClient(ulong id, Stream stream, Socket socket, NatsOptions options, ServerInfo serverInfo, ILogger logger, ServerStats serverStats) { Id = id; _socket = socket; - _stream = new NetworkStream(socket, ownsSocket: false); + _stream = stream; _options = options; _serverInfo = serverInfo; _logger = logger; diff --git a/src/NATS.Server/NatsServer.cs b/src/NATS.Server/NatsServer.cs index b49c9d5..cdf9626 100644 --- a/src/NATS.Server/NatsServer.cs +++ b/src/NATS.Server/NatsServer.cs @@ -98,7 +98,8 @@ public sealed class NatsServer : IMessageRouter, ISubListAccess, IDisposable _logger.LogDebug("Client {ClientId} connected from {RemoteEndpoint}", clientId, socket.RemoteEndPoint); var clientLogger = _loggerFactory.CreateLogger($"NATS.Server.NatsClient[{clientId}]"); - var client = new NatsClient(clientId, socket, _options, _serverInfo, clientLogger, _stats); + var networkStream = new NetworkStream(socket, ownsSocket: false); + var client = new NatsClient(clientId, networkStream, socket, _options, _serverInfo, clientLogger, _stats); client.Router = this; _clients[clientId] = client; diff --git a/tests/NATS.Server.Tests/ClientTests.cs b/tests/NATS.Server.Tests/ClientTests.cs index ce65f18..180566b 100644 --- a/tests/NATS.Server.Tests/ClientTests.cs +++ b/tests/NATS.Server.Tests/ClientTests.cs @@ -39,7 +39,7 @@ public class ClientTests : IAsyncDisposable Port = 4222, }; - _natsClient = new NatsClient(1, _serverSocket, new NatsOptions(), serverInfo, NullLogger.Instance, new ServerStats()); + _natsClient = new NatsClient(1, new NetworkStream(_serverSocket, ownsSocket: false), _serverSocket, new NatsOptions(), serverInfo, NullLogger.Instance, new ServerStats()); } public async ValueTask DisposeAsync()